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.