int n = 0;
while (true) {
System.out.println("Digite um numero: ");
try {
n = in.nextInt();
} catch (InputMismatchException ex) {
System.out.println("apenas numeros");
}
}
Porque quando entra no catch entra em loop infinito?
H
7 Respostas
Oi @Hisaelguedes!
Na verdade, como tu pode observar o bloco do try/catch está dentro de um loop infinito (while(true)). O que tu poderia fazer é dar digitar um “continue” após imprimir o erro.
H
Já fiz isso e que esqueci de colocar ai
H
mesmo colocando o continue ele não deixa digitar o valor de novo
2 likes
O método nextInt() não consome a quebra de linha gerada ao pressionar ENTER.
O único método que consome a quebra de linha é o nextLine().
Faça assim:
String texto = null;
int numero = 0;
while (true) {
System.out.println("Digite um numero: ");
try {
texto = in.nextLine();
numero = Integer.parseInt(texto);
} catch (InputMismatchException ex) {
System.out.println(texto + " não é um número válido!");
}
}
H
Esse código gera um erro
H
Resolvido esse código não gera mais o InputMismatchException
String texto = null;
int numero = 0;
while (true) {
System.out.println("Digite um numero: ");
try {
texto = in.nextLine();
numero = Integer.parseInt(texto);
} catch (NumberFormatException ex) { //alteração
System.out.println(texto + " não é um número válido!");
}
}
1 like
Na verdade o continue não resolverá, pois essa palavra reservada serve para pular para a próxima iteração e não para prao loop.
Use a palavra reservada break ao invés disso.
Criado 2 de janeiro de 2018
Ultima resposta 3 de jan. de 2018
Respostas 7
Participantes 4
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo Desbravando SOLID: Praticas avancadas para codigos de... Por Alexandre Aquiles — Casa do Codigo