[关闭]
@PaulGuan 2016-10-18T17:11:16.000000Z 字数 866 阅读 676

H - Help Kingdom of Far Far Away 2 题解

算法 题解


题目大意

给定一个数字字符串,前面加上$,保留小数点后两位(后面的直接去掉,不进行四舍五入),如果是负数,需要去掉负号,然后在最外面加一对()。

分析

一道字符串处理题,主要是仔细,考虑到各个情况,鉴于c++的string类对于字符串处理的无力(其实这道题需要的处理用c++的string也能完成),我采用java进行编写,使用StringBuffer类。

代码

  1. import static java.lang.System.*;
  2. import java.util.Scanner;
  3. public class h
  4. {
  5. public static void main(String[] args)
  6. {
  7. Scanner s=new Scanner(System.in);
  8. StringBuffer n=new StringBuffer();
  9. n.append(s.next());
  10. int point=n.indexOf(".");
  11. boolean opFlag=true;;
  12. if(point==-1)
  13. {
  14. n.append(".00");
  15. point=n.indexOf(".");
  16. }
  17. if(n.length()-point==2)
  18. n.append('0');
  19. n.delete(point+3,n.length());
  20. if(n.charAt(0)=='-')
  21. {
  22. opFlag=false;
  23. n.setCharAt(0,'$');
  24. n.insert(0,'(');
  25. n.append(')');
  26. }
  27. else
  28. {
  29. n.insert(0,'$');
  30. }
  31. int cnt=1;
  32. if(point==1&&opFlag==true||point==2&&opFlag==false)
  33. {
  34. out.println(n);
  35. return;
  36. }
  37. for(int i=point-1;i>=0;i--)
  38. {
  39. cnt++;
  40. if(n.charAt(i-1)=='$')
  41. break;
  42. if(cnt==3)
  43. {
  44. n.insert(i,',');
  45. cnt=0;
  46. }
  47. }
  48. out.println(n);
  49. return;
  50. }
  51. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注