尝试不要在while(true)循环中执行多次

时间:2015-08-17 13:00:36

标签: java while-loop try-catch

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

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

所以如果我给出一个有效的int(year是int类型),一切都好。如果我给出一个像#34; hello"我期望它做的是再次内部尝试,并在写完错误消息后问我一个数字。 我关于尝试 - 捕捉声明的思维方式是否错误?

2 个答案:

答案 0 :(得分:1)

试试这个(我猜输入是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();

答案 1 :(得分:0)

如果你没有给出数字,你必须尝试这样才能获得下一个输入:

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");