黑马程序员技术交流社区

标题: 头做晕了! [打印本页]

作者: j420984    时间: 2015-6-28 18:44
标题: 头做晕了!
10、 金额转换,阿拉伯数字转换成中国传统形式。
例如:101000001010   转换为   壹仟零壹拾亿零壹仟零壹拾圆整
下面是代码,离要求还差远了.
package com.jwd.black.exam;

import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class Exam10 {

        public static void main(String[] args) throws IOException {
                System.out.println("请从键盘上随便输入一个金额");
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                String s = br.readLine();
                numToWord(s);
        }

        public static StringBuffer numToWord(String num) {
                char[] arr = num.toCharArray();
                StringBuffer result = new StringBuffer("圆整");
                Map<String, String> m = new HashMap<String, String>();
                Long no = Long.parseLong(num);
                Long nr = (long) 0;
                String key = "";
                String value = "";
                for (int j = arr.length; j > 0; j--) {
                        key = Integer.toString(10 + j);
                        if (j != 0 && j != 8 && j != 12) {

                                switch (j % 4) {
                                case 1:
                                        value = "拾";
                                        break;
                                case 2:
                                        value = "佰";
                                        break;
                                case 3:
                                        value = "仟";
                                        break;
                                case 0:
                                        value = "万";
                                        break;
                                }
                        } else if (j == 8) {
                                value = "亿";
                        }
                        m.put(key, value);
                }
                m.put("0", "零");
                m.put("1", "壹");
                m.put("2", "贰");
                m.put("3", "叁");
                m.put("4", "肆");
                m.put("5", "伍");
                m.put("6", "陆");
                m.put("7", "柒");
                m.put("8", "捌");
                m.put("9", "玖");
                for (int i = 0; i < arr.length; i++) {
                        // 除10取余
                        nr = no % 10;
                        no = no / 10;
                        if (i != 0)
                                result = result.insert(0, m.get(Integer.toString(10 + i)));
                        if (nr != 0)//如为0转化为字符串时会变为NULL
                                result = result.insert(0, m.get(nr.toString()));
                        else
                                result = result.insert(0, "零");
                        System.out.println(result);
                }
                return result;
        }
}
输出结果:壹仟零佰壹拾零亿零仟零佰零拾零万壹仟零佰壹拾零圆整
作者: 符慢慢    时间: 2015-6-28 21:52
好吧   还没有想到 简单的方法

作者: EnderDBluse    时间: 2015-6-28 22:08
加油干 骚年:handshake
作者: Dylon    时间: 2015-6-28 22:16
骚年,努力吧,快接近成功了
作者: 拐子    时间: 2015-6-28 22:47
才刚学到面向对象 ,所以母鸡呀
作者: 15311068548    时间: 2015-6-28 23:25
加油,面向对象有点困惑
作者: fmi110    时间: 2015-6-29 09:16
学习一下
作者: 357955778    时间: 2015-6-29 19:36
厉害啊!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2