黑马程序员技术交流社区

标题: 这个代码是否可以帮忙优化下。 [打印本页]

作者: olivor    时间: 2015-11-25 23:27
标题: 这个代码是否可以帮忙优化下。
从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
* 分析:需求可以使用键和键值对的映射方法来完成编程。
*/
import java.io.*;
import java.util.*;
public class Test2 {

        /**
         * @param args
         */
        public static void main(String[] args) throws IOException
        {
                // 定义一个符合要求的HashMap
Map<String,String> map = new HashMap<String,String>();
map.put("1", "一");
map.put("2", "二");
map.put("3", "三");
map.put("4", "四");
map.put("5", "五");
map.put("6", "六");
map.put("7", "七");
map.put("8", "八");
map.put("9", "九");
map.put("0", "零");
        // 指数用户输入一个数字,并按Enter键
System.out.print("请输入一个阿拉伯数字,并按Enter键");
        // 创建一个字符流缓冲区从键盘录入数字
BufferedReader bufr
           = new BufferedReader(new InputStreamReader(System.in));
        // 读取缓冲区的数字字符串,然后分割进字符数组里面,作为原HashMap的键。
String line = bufr.readLine();
String[] arr = line.split("");
        // 使用HashMap通过键取值方法,完成取值,完成打印转换
for(String s:arr)
{
System.out.print(map.get(s));
}
bufr.close();
}
        }

作者: 王际涛    时间: 2015-11-25 23:49
用数组也很方便的~
public static void main(String[] args) {
                String[] asd={"零","一","二","三","四","五","六","七","八","九",};
                System.out.println("请输入一个数字:");
                Scanner sc=new Scanner(System.in);
                String as=sc.nextLine();
                for(int i=0;i<as.length();i++){
                        System.out.print(asd[Integer.parseInt(as.charAt(i)+"")]);
                }
        }
作者: Weidan    时间: 2015-11-28 15:24
王际涛 发表于 2015-11-25 23:49
用数组也很方便的~
public static void main(String[] args) {
                String[] asd={"零","一","二","三","四", ...

不得不给你定个赞
作者: xinxiangchen    时间: 2015-11-28 16:00
数组 点赞~
作者: 许鹏飞    时间: 2015-11-28 16:21
没必要这么麻烦,直接数组,输入的数字0-9分别表示角标,角标所对应的元素分别表示中文的零--九

输入的数字作为字符串,调用toCharArry转成字符数组,然后判断呗,将对应的中文数字添加到字符串缓冲区打印出来即可




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