Olá,
No código abaixo, se eu comentar a linha s.nextLine() resulta em loop infinito assim como abaixo.
Minha dúvida é: se quando ocorre a excessão que é capturada pelo catch o fluxo volta a entrar no try (como continua ainda é true) e executa System.out.println("Informe um numero: "), por que a instrução double a = s.nextDouble() não é executada pela JVM?
public class DividePorZero {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean continua = true;
do {
try {
System.out.println("Informe um numero: ");
double a = s.nextDouble();
System.out.println("Informe o divisor: ");
double b = s.nextDouble();
System.out.println(a / b);
continua = false;
} catch (InputMismatchException e1) {
System.out.println("Não é possível dividir um número por uma letra.");
s.nextLine();
}
} while (continua);
}
}
Loop:
Não é possível dividir um número por uma letra.
Informe um numero:
Não é possível dividir um número por uma letra.
Informe um numero:
Não é possível dividir um número por uma letra.
Informe um numero:
Não é possível dividir um número por uma letra.
Informe um numero:
Grato pela atenção.