【发布时间】:2013-11-14 17:03:36
【问题描述】:
此程序需要用户输入的大写字母。输入保存在 char 变量 c 中,然后转换为 ascii,然后检查它是否真的是大写字母。如果没有,程序应该再次询问。问题是,该命令 System.out.println("Write capital letter: ") 被执行多次,它看起来像这样:
大写字母: 写大写字母: 写大写字母: 写大写字母: 写大写字母:
我希望每次输入错误后屏幕上只有一个“写大写字母:”,并且需要使用 ascii 表完成。
提前致谢。
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int ascii;
char c;
do {
System.out.println("Write capital letter: ");
c = (char) System.in.read();
ascii = (int) c;
} while (ascii < 65 || ascii > 90 );
【问题讨论】:
-
你试过调试这个吗?当
while语句发生时,c和ascii有什么值? -
确实,在
ascii = (int) c;之后添加类似System.out.println( ascii )的内容,然后看看你得到了什么值。然后查找哪些字符有这些代码。 -
导致提示多次显示的原因是,当您读取一个字节(字符)时,它会将您输入的该行上的任何其他内容(包括换行符)留给
System.in。
标签: java loops while-loop do-while