此程序需要用户输入的大写字母。输入保存在char变量c中,之后转换为ascii,然后检查,如果它确实是大写字母。如果没有,程序应该再问一次。问题是,该命令System.out.println(“写入大写字母:”)被执行多次,看起来像这样:
写大写字母: 写大写字母: 写大写字母: 写大写字母: 写大写字母:
我希望在每次错误输入后只在屏幕上显示一个“写大写字母:”,并且需要使用ascii table完成。
提前致谢。
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 );
答案 0 :(得分:1)
System.out.println("Write capital letter: ");
do {
c = (char) System.in.read();
// ascii = (int) c; // not needed if you are using the isUppercase() method
if(! Character.isUppercase(c)){
System.out.println("Write capital letter: ");
}
} while (! Character.isUppercase(c) );
只要条件为真,就会执行do
块中定义的任何内容。因此,仅在do
块之外移动您要执行的语句一次。
答案 1 :(得分:0)
为什么在设置System.in.read()
变量时使用BufferedReader
?
这将解决您的问题。我正在使用您的BufferedReader in
变量。
while (true) {
System.out.println("Write capital letter: ");
int b = 0
while ((b = in.read()) != -1){
char c = (char) c;
if (Character.isUpperCase(c)) break;
}
//Carry on...
}