int n = 0;
while (true) {
System.out.println("Digite um numero: ");
try {
n = in.nextInt();
} catch (InputMismatchException ex) {
System.out.println("apenas numeros");
}
}
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.
Já fiz isso e que esqueci de colocar ai
mesmo colocando o continue ele não deixa digitar o valor de novo
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!");
}
}
2 curtidas
Esse código gera um erro
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!");
}
}
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.
1 curtida