6
Because if I put an invalid entry like asdf the code below enters infinite loop?
After capturing the exception and writing the message he should not ask for another entry again?
import java.util.Scanner;
public class Leitura {
public static void main (String[] argumentos) {
int chute = -1, sorteado = 37;
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Insira um número:");
try {
chute = scanner.nextInt();
} catch (Exception excecao) {
System.out.println("Lol, loop infinito? Sem pedir outra entrada novamente?");
System.out.println("O chute foi: " + chute + "\n");
}
} while (chute != sorteado);
}
}
Interesting. But I didn’t understand why the method
next
in this case does not ask the user to enter an entry again and only cleans the buffer (I proved it works)? Because if I put in place ofchute = scanner.nextInt();
something likeumaString = scanner.next();
it will ask the user to enter a string.– GarouDan
In that case yes, just the
next()
for String.– Lucas Lima
But why inside the catch does it not ask the user to enter a string? (This happens only inside Try).
– GarouDan
Because in the
catch
Scanner buffer already has a\n
stored. Then it’s past thenext()
without having to type anything. Now put twonext()
in thecatch
and see the difference.– Lucas Lima