尽量不要在 while(true) 循环中执行多次

Try not getting executed more than once in while(true) loop

我正在编写程序的一个简单部分,用户可以在其中输入出生年份。代码如下:

while(true){
   try {
      year = input.nextInt();
      break;
   } catch (InputMismatchException mismatchException) {
       System.err.println("year of birth can only have numbers");
   }
}

如果我给出一个有效的整数(年份是整数类型),那么会发生什么?如果我给出一个像 "hello" 这样的字符串,我希望它做的是再次进入内部尝试并在它写入错误消息后向我询问一个数字。
我对 try - catch 语句的思考方式是错误的吗?

试试这个(我猜输入是 java.util.Scanner):

while(input.hasNext()) {
    if (input.hasNextInt()) {
       year = input.nextInt();
       break;
    } else {
        System.out.println("year of birth can only have numbers");
        input.next();
    }
}
input.close();

你必须尝试这个,这样你才能得到下一个输入,如果你不给一个数字:

Scanner input = new Scanner(System.in);    
int year;
boolean repeat = true;
while(repeat){
try {
        repeat = false;
          year = input.nextInt();
       } catch (InputMismatchException mismatchException) {
           System.err.println("year of birth can only have numbers");
           input.next();
           repeat = true;
       }
}

System.out.println("DONE");