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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.itheima;

public class Text10 {
        /**
         * 10、 金额转换,阿拉伯数字转换成中国传统形式。
         *
         * 例如:101000001010 转换为 壹仟零壹拾亿零壹仟零壹拾圆整
         *
         * @param args
         */
        public static void main(String[] args) {
                Text10 c = new Text10();
                System.out.println(c.change("190348.78"));
        }

        public String change(String m) {
                StringBuffer re = new StringBuffer("");

                int i = 0;
                int j = 0;
                i = m.lastIndexOf(".");
                if (i == -1)
                        i = m.length();
                String b = m.substring(0, i);
                char[] c = b.toCharArray();
                StringBuffer s = null;
                for (i = c.length - 1, j = 0; i >= 0; i--, j++) {
                        s = new StringBuffer("");
                        if (i != c.length - 1 && c[i + 1] != '0')
                                s.append(changeNum(c));
            
            if (c != '0') {
                                switch (j % 4) {
                                case 1:
                                        s.append("拾");
                                        break;
                                case 2:
                                        s.append("佰");
                                        break;
                                case 3:
                                        s.append("仟");
                                        break;
                                default:
                                        break;
                                }
                        }
                        if (j != 0 && j % 8 == 0)
                                s.append("亿");
                        else if (j != 0 && j % 4 == 0) {
                                s.append("万");
                        }
                        re = s.append(re);
                }
                re.append("圆");
                i = m.lastIndexOf(".");
                String d = null;
                if (i != -1) {
                        d = m.substring(i + 1, m.length());
                        char[] e = d.toCharArray();
                        if (e.length == 1)
                                if (e[0] != '0')
                                        re.append("零").append(changeNum(e[0])).append("角")
                                                        .toString();
                        if (e.length == 2)
                                if (e[0] != '0' || e[1] != '0')
                                        re.append("零");
                        if (e[0] != '0')
                                re.append(changeNum(e[0])).append("角").toString();
                        if (e[1] != '0')
                                re.append(changeNum(e[1])).append("分").toString();
                }

                return re.toString();
        }

        public String changeNum(char c) {
                String[] n = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
                return n[c - '0'];
        }

}

2 个回复

倒序浏览
if (c != '0')这个比较里面,c是一个字符数组的名字,而'0'是一个字符,他们之间不能进行比较的,应该用c[i]之类的值与'0'进行比较才行吧,还有changeNum(c)这个地方错误也是因为changeNum函数的参数是一个字符类型,你传进去的却是一个字符数组的名字,这样是不行的,参数类型不匹配呀

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
帖子已分类,若仍有疑惑,可重新提问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马