黑马程序员技术交流社区
标题:
(从键盘接受一个数字,列出该数字的中文表示格式)的问题
[打印本页]
作者:
小泽
时间:
2015-2-21 19:53
标题:
(从键盘接受一个数字,列出该数字的中文表示格式)的问题
先上代码:
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;
}
}
复制代码
问题在于,输入带有空格的字符串 程序不会判断出错,这是为什么?求大神解答。
作者:
小泽
时间:
2015-2-21 20:52
求解释啊 弄不明白了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2