先上代码:
- public class Test3 {
- public static void main(String[] args) {
- // 调用方法从键盘输入一个字符串。
- String num = collect();
- // 调用方法getUppercase把字符串num翻译成大写数字。并定义一个容器并接收
- StringBuilder sbf = getUppercase(num);
- // 打印出翻译后的数字。
- System.out.println(sbf);
- }
- /**
- * 从键盘接收一个字符串
- *
- * @return num 键盘接收的字符串。
- */
- @SuppressWarnings("resource")
- public static String collect() {
- // 在屏幕上打印出提示语句。
- System.out.println("请输入一段数字:");
- // 定义一个输入流接收键盘输入的字符串并赋给字符串num。
- String num = "";
- num = new Scanner(System.in).next();
- return num;
- }
- /**
- * 接收一个数字组成的字符串,并返回一个装载着该字符串中的数字对应的中文表示形式的Stringbuffer容器。
- *
- * @param num 接收一个字符串
- * @return 返回一个StringBuffer容器
- */
- public static StringBuilder getUppercase(String num) {
- StringBuilder sbl = new StringBuilder();
- Map<String, String> map = new HashMap<String, String>();//定义一个Map集合并添加对应关系。
- map.put("0", "零");
- 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", "九");
- for (int x = 0; x < num.length(); x++) {
- char c = num.charAt(x);//取出num中的脚标为x的字符
- String str = num.substring(x, x + 1);//取出num中的脚标为x的字符存进str字符串中。
- if ((c < 48 || c > 57) || (num == null || c == 32)) { //健壮性判断,但现在无法判断num为空和num中有空格现象。似乎遇到空格或者空输入情况控制台不予理会。
- sbl.replace(0, x, "输入不合法");
- System.out.println(sbl);
- sbl.delete(0, sbl.length());
- num = collect();
- sbl = getUppercase(num);//递归调用方法
- return sbl;
- }
- sbl.append(map.get(str));//取出map集合中的键对应的值并添加进容器中。
- }
- return sbl;
- }
- }
复制代码
问题在于,输入带有空格的字符串 程序不会判断出错,这是为什么?求大神解答。 |