@PaulGuan
        
        2016-10-18T17:11:16.000000Z
        字数 866
        阅读 871
    算法 题解
给定一个数字字符串,前面加上$,保留小数点后两位(后面的直接去掉,不进行四舍五入),如果是负数,需要去掉负号,然后在最外面加一对()。
一道字符串处理题,主要是仔细,考虑到各个情况,鉴于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;}}