java exception-handling while-loop try-catch mismatch

Java InputMismatchException



exception-handling while-loop (2)

del doc

Scanner.nextInt Escanea el siguiente token de la entrada como un int. si el próximo token no coincide con la expresión regular Integer, o está fuera de rango

Parece que no está ingresando ningún número entero como entrada.

puedes usar

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

Tengo este código y quiero capturar la excepción de carta pero sigue teniendo estos errores:

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)

Y aquí está mi código:

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


Puede utilizar un bucle do-while para eliminar el primer 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);

Por lo tanto, todas las InputMismatchException pueden manejarse en un solo lugar.