0

该程序需要用户输入的大写字母。输入保存在 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 );   
4

2 回答 2

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块。

于 2013-11-14T17:05:19.187 回答
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...
}
于 2013-11-14T17:11:34.083 回答