A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨增坤 于 2013-9-11 17:05 编辑
  1. public class Num2Rmb
  2. {
  3. private String[] hanArr ={"零","壹","贰","叁","肆","伍","陆",
  4. "柒","捌","玖"};
  5. private String[] unitArr ={"十","百","千"};

  6. private String [] divide(double num)
  7. {
  8. long zheng=(long)num;
  9. long xiao=Math.round((num-zheng)*100);
  10. return new String[]{zheng+"",String.valueOf(xiao)};
  11. }
  12. private String toHanStr(String numStr)
  13. {
  14. String result = "";
  15. int numLen =numStr.length();
  16. for(int i=0;i<numLen;i++)
  17. {
  18. int num =numStr.charAt(i)-48;
  19. if (i != numLen-1&&num !=0)
  20. {
  21. result += hanArr[num]+unitArr[numLen-2-i];
  22. }
  23. else
  24. {
  25. result += hanArr[num];
  26. }
  27. }
  28. return result;
  29. }
  30. public static void main(String[] args)
  31. {
  32. Num2Rmb nr =new Num2Rmb();
  33. System.out.println(Arrays.toString (nr.divide(236711125.124)));
  34. System.out.println(nr.toHanStr("6322"));
  35. }
  36. }
复制代码
代码照书上一样的打的。。
34行报错,Arrays.toString 找不到符号

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

7 个回复

正序浏览
杨彬 中级黑马 2013-9-10 22:07:17
8#
  1. public class Test10 {
  2.         /**
  3.          * @param args
  4.          *
  5.          * 第10题: 金额转换,阿拉伯数字转换成中国传统形式。
  6.          * 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
  7.          */
  8.         public static void main(String[] args) {

  9.                 long money = 101000001010L;
  10. //                long money = 111001001110L;
  11.                 System.out.println("转换为中国汉字形式之前:"+money);
  12.                 System.out.println("转换为中国汉字形式之后:"+convert(money));
  13.         }

  14.         public static String convert(long money) {
  15.                 String str = Long.toString(money);
  16.                 // 将字符串数字替换成中文数字
  17.                 char[] num = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
  18.                 char[] cnNum = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
  19.                 for (int i = 0; i < 10; i++) {
  20.                         str = str.replace(num[i], cnNum[i]);
  21.                 }
  22.                 // StringBuilder存放字符串,用于插入删除操作
  23.                 StringBuilder chinese = new StringBuilder(str);
  24.                 // 从第index个字符从后往前开始操作,操作一次,index--
  25.                 int index = str.length() - 1;
  26.                 // 存放金额单位
  27.                 String[] unit = { "", "拾", "佰", "仟" };
  28.                 String[] unit4 = { "万", "亿" };
  29.                 // 判断前一个数是否为零的标记
  30.                 boolean flag = false;
  31.                 // 循环体内对chinese进行操作
  32.                 for (int i = 0; i < str.length(); i++) {
  33.                         // 每4位插入万,每8位插入亿,最低位先不设置单位
  34.                         if (i % 4 == 0 && i != 0) {
  35.                                 // 单位万前面为4个零时,不插入万,并将index位置(最低位)的零删除
  36.                                 if ((i / 4 - 1) % 2 == 0 && index >= 3
  37.                                                 && str.substring(index - 3, index + 1).equals("零零零零")) {
  38.                                         chinese.deleteCharAt(index);
  39.                                         index--;
  40.                                         continue;
  41.                                 }
  42.                                 // 否则在index+1位置插入相应的单位:万、亿
  43.                                 chinese.insert(index + 1, unit4[(i / 4 - 1) % 2]);
  44.                         }
  45.                         // 如果4位的最低位为零,删除最低位的零,将零标志置为true
  46.                         if (i % 4 == 0 && str.charAt(index) == '零') {
  47.                                 chinese.deleteCharAt(index);
  48.                                 flag = true;
  49.                                 index--;
  50.                                 continue;
  51.                         }
  52.                         // 如果前一位为零并且这一位也为零,删除这一位的零
  53.                         if (flag && str.charAt(index) == '零') {
  54.                                 chinese.deleteCharAt(index);
  55.                                 index--;
  56.                                 continue;
  57.                         }
  58.                         // 如果当前位为零,将零标志置为true
  59.                         if (str.charAt(index) == '零') {
  60.                                 flag = true;
  61.                                 index--;
  62.                                 continue;
  63.                         }
  64.                         // 当前位不为零,将零标志位置为false,插入金额单位
  65.                         flag = false;
  66.                         chinese.insert(index + 1, unit[i % 4]);
  67.                         index--;
  68.                 }
  69.                 // 完善金额表示形式
  70.                 chinese.append("圆整");
  71.                 return chinese.toString();
  72.         }
  73. }
复制代码
回复 使用道具 举报
楼主,你好,如果您的问题解决了!


请把您问题的未解决更改为已解决

谢谢合作!

回复 使用道具 举报
package com.itheima;
import java.util.Arrays;

public class Num2Rmb {
        private String[] hanArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌",
                        "玖" };
        private String[] unitArr = { "十", "百", "千" };

        private String[] divide(double num) {
                long zheng = (long) num;
                long xiao = Math.round((num - zheng) * 100);
                return new String[] { zheng + "", String.valueOf(xiao) };
        }

        private String toHanStr(String numStr) {
                String result = "";
                int numLen = numStr.length();
                for (int i = 0; i < numLen; i++) {
                        int num = numStr.charAt(i) - 48;
                        if (i != numLen - 1 && num != 0) {
                                result += hanArr[num] + unitArr[numLen - 2 - i];
                        } else {
                                result += hanArr[num];
                        }
                }
                return result;
        }

        public static void main(String[] args) {
                Num2Rmb nr = new Num2Rmb();
                System.out.println(Arrays.toString(nr.divide(236711125.124)));
                System.out.println(nr.toHanStr("6322"));
        }
}
回复 使用道具 举报
傻瓜一点红 发表于 2013-9-9 17:06
Math类是在java.lang里面,这个包虚拟机会自动导入,但Arrays工具类是在java.util包里,得手动导入,你在 ...

原来如此,谢谢
回复 使用道具 举报
cs8630323 发表于 2013-9-9 17:01
不会导包。。。。
不过math类能用,这个怎么却不能?

Math类是在java.lang里面,这个包虚拟机会自动导入,但Arrays工具类是在java.util包里,得手动导入,你在程序最上面写上一句:import java.util.*;这局的意思就是导入util包中的所有类,import就是导包

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
傻瓜一点红 发表于 2013-9-9 16:52
导包没?工具类需要导包

不会导包。。。。
不过math类能用,这个怎么却不能?
回复 使用道具 举报
导包没?工具类需要导包
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马