For 循环 - 验证输入,程序崩溃 (.hasNextInt())

For loop - validating input, program crashes (.hasNextInt())

我正在 java 中编写一个程序,将用户使用 for 循环输入的 5 个数字(正整数)相加。 当给出正确的输入甚至给出负整数时,我已经设法让它工作,但是当输入非 int 时程序崩溃。 感谢您的帮助!

    for (int i = 0; i < 5 ; i++ ) {
        if (myScanner.hasNextInt()) {
            x = myScanner.nextInt();
            if (x < 0) {
               System.out.println("Invalid input, enter again:"); 
               x = myScanner.nextInt();
            }
        } 
        else {
            System.out.println("Invalid input, enter again:");
            x = myScanner.nextInt();// this works in the nested if but not here,  why?

        }
        sum += x;
    }

    System.out.println("Sum is: " + sum);
}//end class

你检查扫描仪是否有下一个整数,然后,仍然要求一个它没有的整数...

这是更正后的版本:

for (int i = 0; i < 5 ; i++ ) {
    if (myScanner.hasNextInt()) {
        x = myScanner.nextInt();
        if (x < 0) {
           System.out.println("Invalid input, enter again:"); 
        } else {
           sum += x;
        }
    } 
    else {
        // get whatever is on the scanner, since we know it isn't and int
        String crud  = s.next(); 
        System.out.println("Invalid input "+crud+" enter again:");
    }

}

InputMismatchException 被抛出,尝试从一个地方调用 x = myScanner.nextInt 的逻辑,

int count = 0;
 while (true) 
 {
   try
   {
     if (myScanner.hasNextInt()) 
     {
       x = myScanner.nextInt();
       if (x < 0) 
       {
         System.out.println("Invalid input, enter again:"); 
       }
     } 
     else 
     {
        System.out.println("Invalid input, enter again:");
        continue;
     }
   }
   catch(Exception e)
   {
      System.out.println("Invalid input, enter again:"); 
      continue;
   }
   count++;
   sum += x;
   if(count==5)break;
 }