@PaulGuan
2016-10-19T01:11:16.000000Z
字数 866
阅读 736
算法
题解
给定一个数字字符串,前面加上$,保留小数点后两位(后面的直接去掉,不进行四舍五入),如果是负数,需要去掉负号,然后在最外面加一对()。
一道字符串处理题,主要是仔细,考虑到各个情况,鉴于c++的string类对于字符串处理的无力(其实这道题需要的处理用c++的string也能完成),我采用java进行编写,使用StringBuffer类。
import static java.lang.System.*;
import java.util.Scanner;
public class h
{
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
StringBuffer n=new StringBuffer();
n.append(s.next());
int point=n.indexOf(".");
boolean opFlag=true;;
if(point==-1)
{
n.append(".00");
point=n.indexOf(".");
}
if(n.length()-point==2)
n.append('0');
n.delete(point+3,n.length());
if(n.charAt(0)=='-')
{
opFlag=false;
n.setCharAt(0,'$');
n.insert(0,'(');
n.append(')');
}
else
{
n.insert(0,'$');
}
int cnt=1;
if(point==1&&opFlag==true||point==2&&opFlag==false)
{
out.println(n);
return;
}
for(int i=point-1;i>=0;i--)
{
cnt++;
if(n.charAt(i-1)=='$')
break;
if(cnt==3)
{
n.insert(i,',');
cnt=0;
}
}
out.println(n);
return;
}
}