黑马程序员技术交流社区

标题: (从键盘接受一个数字,列出该数字的中文表示格式)的问题 [打印本页]

作者: 小泽    时间: 2015-2-21 19:53
标题: (从键盘接受一个数字,列出该数字的中文表示格式)的问题
先上代码:
  1. public class Test3 {

  2.         public static void main(String[] args) {

  3.                 // 调用方法从键盘输入一个字符串。
  4.                 String num = collect();

  5.                 // 调用方法getUppercase把字符串num翻译成大写数字。并定义一个容器并接收
  6.                 StringBuilder sbf = getUppercase(num);

  7.                 // 打印出翻译后的数字。
  8.                 System.out.println(sbf);

  9.         }

  10.         /**
  11.          * 从键盘接收一个字符串
  12.          *
  13.          * @return num 键盘接收的字符串。
  14.          */
  15.         @SuppressWarnings("resource")
  16.         public static String collect() {
  17.                 // 在屏幕上打印出提示语句。
  18.                 System.out.println("请输入一段数字:");

  19.                 // 定义一个输入流接收键盘输入的字符串并赋给字符串num。
  20.                 String num = "";
  21.                 num = new Scanner(System.in).next();
  22.                 return num;
  23.         }

  24.         /**
  25.          * 接收一个数字组成的字符串,并返回一个装载着该字符串中的数字对应的中文表示形式的Stringbuffer容器。
  26.          *
  27.          * @param num 接收一个字符串
  28.          * @return 返回一个StringBuffer容器
  29.          */
  30.         public static StringBuilder getUppercase(String num) {
  31.                 StringBuilder sbl = new StringBuilder();
  32.                 Map<String, String> map = new HashMap<String, String>();//定义一个Map集合并添加对应关系。
  33.                 map.put("0", "零");
  34.                 map.put("1", "一");
  35.                 map.put("2", "二");
  36.                 map.put("3", "三");
  37.                 map.put("4", "四");
  38.                 map.put("5", "五");
  39.                 map.put("6", "六");
  40.                 map.put("7", "七");
  41.                 map.put("8", "八");
  42.                 map.put("9", "九");
  43.                 for (int x = 0; x < num.length(); x++) {
  44.                         char c = num.charAt(x);//取出num中的脚标为x的字符
  45.                         String str = num.substring(x, x + 1);//取出num中的脚标为x的字符存进str字符串中。
  46.                         if ((c < 48 || c > 57) || (num == null || c == 32)) { //健壮性判断,但现在无法判断num为空和num中有空格现象。似乎遇到空格或者空输入情况控制台不予理会。
  47.                                 sbl.replace(0, x, "输入不合法");
  48.                                 System.out.println(sbl);
  49.                                 sbl.delete(0, sbl.length());
  50.                                 num = collect();
  51.                                 sbl = getUppercase(num);//递归调用方法
  52.                                 return sbl;
  53.                         }

  54.                         sbl.append(map.get(str));//取出map集合中的键对应的值并添加进容器中。

  55.                 }
  56.                 return sbl;
  57.         }

  58. }
复制代码


问题在于,输入带有空格的字符串 程序不会判断出错,这是为什么?求大神解答。
作者: 小泽    时间: 2015-2-21 20:52
求解释啊 弄不明白了




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