Java InputMismatchException

我有这个代码,我想捕获字母exception,但它一直有这些错误:

Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:840) at java.util.Scanner.next(Scanner.java:1461) at java.util.Scanner.nextInt(Scanner.java:2091) at java.util.Scanner.nextInt(Scanner.java:2050) at exercise_one.Exercise.main(Exercise.java:17) 

这是我的代码:

  System.out.print("Enter the number of students: "); students = input.nextInt(); while (students <= 0) { try { System.out.print("Enter the number of students: "); students = input.nextInt(); } catch (InputMismatchException e) { System.out.print("Enter the number of students"); } } 

您可以使用do-while循环来消除第一个input.nextInt()

 do { try { System.out.print("Enter the number of students: "); students = input.nextInt(); } catch (InputMismatchException e) { System.out.print("Invalid number of students. "); } input.nextLine(); // clears the buffer } while (students <= 0); 

因此,可以在一个地方处理所有InputMismatchException

来自文件

Scanner.nextInt将输入的下一个标记扫描为int。 如果下一个标记与整数正则表达式不匹配,或者超出范围

因此,您似乎没有输入任何整数作为输入。

您可以使用

  while (students <= 0) { try { System.out.print("Enter the number of students: "); students = input1.nextInt(); } catch (InputMismatchException e) { input1.nextLine(); } }