黑马程序员技术交流社区

标题: 一个小题,大家看看有没有更简单的方法 [打印本页]

作者: lvzhfeng    时间: 2015-6-26 15:15
标题: 一个小题,大家看看有没有更简单的方法
  1. package com.itheima;
  2. /**
  3. * 第三题:从键盘接受一个数字,列出该数字的中文表示格式,
  4. * 例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
  5. * @author Machel
  6. */
  7. import java.io.*;
  8. public class Test3{
  9.         public static void main(String[] args) throws Exception
  10.         {
  11.                 //读取键盘录入
  12.                 BufferedReader bufr =
  13.                         new BufferedReader(new InputStreamReader(System.in));
  14.                 String line;
  15.                 while((line = bufr.readLine())!=null)
  16.                 {
  17.                         String str = changeStr(line);
  18.                         System.out.println(str);
  19.                         //当键入over时,结束程序
  20.                         if ("over".equals(line))
  21.                                 break;
  22.                 }
  23.                 bufr.close();
  24.         }
  25.         //定义一个changeStr()方法,用以转换阿拉伯数字与中文数字
  26.         public static String changeStr(String str)
  27.         {
  28.                 char[] num = new char[]{'0','1','2','3','4','5',
  29.                                 '6','7','8','9'};
  30.                 char[] chinese = new char[]{'零','一','二','三','四','五',
  31.                                 '六','七','八','九'};
  32.                 char[] strArr = str.toCharArray();
  33.                 for(int i=0;i<strArr.length;i++)
  34.                 {
  35.                         for (int j=0; j<=9; j++)
  36.                         {
  37.                                 if (strArr[i]==num[j])
  38.                                 {
  39.                                         strArr[i] = chinese[j];
  40.                                 }
  41.                         }
  42.                 }
  43.                 str = String.copyValueOf(strArr);
  44.                 return str;
  45.         }
  46. }
复制代码

作者: 风一样的少年    时间: 2015-6-26 15:27
很好,支持下
作者: fmi110    时间: 2015-6-26 16:59
看看学习一下
作者: 半月    时间: 2015-6-26 17:37
既然转换的是数字干嘛还循环判断他是那个数字
直接输出对数字对应下标不就好了
我吧你第二个for改成
  1.                         //如果字符是0-9之间就转换
  2.                         if(strArr[i]>='0' && strArr[i]<='9'){
  3.                                 strArr[i] = chinese[strArr[i]-'0'];
  4.                         }
复制代码

char[] num = new char[]{'0','1','2','3','4','5',
                                '6','7','8','9'};这句就没必要了
作者: lvzhfeng    时间: 2015-6-26 20:55
半月 发表于 2015-6-26 17:37
既然转换的是数字干嘛还循环判断他是那个数字
直接输出对数字对应下标不就好了
我吧你第二个for改成

受教了。。
作者: keto    时间: 2015-6-26 21:06
学习了。。。。
作者: Overheat    时间: 2015-6-26 21:13
很好,学习学习
作者: 夜空中最亮的星    时间: 2015-6-26 21:28
很好学习了,赞一个!
作者: e275919713    时间: 2015-6-26 21:37
涨姿势了
作者: 进军黑马    时间: 2015-6-26 21:53
挺好                                




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