黑马程序员技术交流社区

标题: 字符串转换问题 [打印本页]

作者: 愤怒的大飞机    时间: 2017-2-10 16:54
标题: 字符串转换问题
将数字转成人民币读法的字符串,要求如下:
1.        键盘录入一个整数,如果整数在0-999(包含0和999)之间,将该整数转换成人民币读法的字符串并在控制台打印后将该字符串存储起来,
如果输入的整数不在0-999区间内就结束程序并在控制台提示,要求:结束程序之前将之前存储的字符串在全部控制台打印输出
2.        人民币读法格式:十位数后面加单元“拾”,百位数后面加单元“佰”,0-9之间的大写字如下:"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"
例:键盘录入567在控制台打印:伍佰陆拾柒
我做的太复杂,用了好多if ..else语句,有简单点的写法吗?

作者: 喝水喝饱了    时间: 2017-2-10 17:45
百度里面有,用数组来做

作者: jxsryqt    时间: 2017-2-10 19:07
考试题就是这个,做了好久,先用三个map 映射汉字零到玖,和拾佰仟,万亿。遍历金额转换成汉字,再用正则替换成标准格式。

作者: a3821955    时间: 2017-2-10 19:59
学习楼上的方法了

作者: 灰太狼大哥    时间: 2017-2-10 21:04
用数组做会简单点

作者: Jet'aime    时间: 2017-2-10 21:17
本帖最后由 Jet'aime 于 2017-2-10 21:18 编辑

[Java] 纯文本查看 复制代码
        public static String changeMoney() {
                //定义数组存储零到玖,跟下标对应
                String[] numArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
                //初始化键盘录入值
                int money = -1;
                //录入整数
                while (true) {
                        System.out.println("请输入一个0-999之间的整数:");
                        Scanner sc = new Scanner(System.in);
                        try {
                                money = sc.nextInt();
                        } catch (Exception e) {
                                System.out.println("请输入数字!");
                                continue;
                        }
                        if (money >= 0 && money <= 999) {
                                break;
                        }
                }
                ///分别获取录入数字的个位十位和百位
                int ge = money % 10;
                int shi = money / 10 % 10;
                int bai = money / 100;
                //找到每位数字对应的汉字并拼接
                String str = "";
                if (bai != 0) {
                        str = numArr[bai] + "佰" + numArr[shi] + "拾" + numArr[ge];
                } else if (shi != 0) {
                        str = numArr[shi] + "拾" + numArr[ge];
                } else if (ge != 0) {
                        str = numArr[ge];
                } else {
                        str = "零";
                }
                return str;
        }

作者: sigod    时间: 2017-2-10 23:52
支持楼上的。
作者: zmanx    时间: 2017-2-11 00:27
高手真多啊

作者: 愤怒的大飞机    时间: 2017-2-11 22:41
Jet'aime 发表于 2017-2-10 21:17
[mw_shl_code=java,true]        public static String changeMoney() {
                //定义数组存储零到玖,跟下标对应
                St ...

我想到一个更简单的,明天发





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