Estou com uma dúvida no código abaixo, fiz o tratamento quando o usuário digita uma letra, até ai tudo bem…mais quando o usuário digita uma letra e depois uma delete ele da outro erro, ai eu tratei ele tb, só que quando o usuário digita uma letra e depois o delete ele da erro no idade = Integer.parseInt(letra);
se eu tratar esse tb, ele vai dar erro no outro pois eu preciso que o usúario digite um número para a idade…como resolver esse problema?
Vai depender da forma como vc quer que o sistema se comporte. Nesse exemplo que fiz, o sistema vai ficar perguntando a idade até que o usuário informe um valor válido, infinitamente. Mas se fosse o caso de perguntar apenas uma vez, ficaria assim:
public class Main {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("Digite sua idade: ");
int idade = Integer.parseInt(scanner.next());
System.out.println("Sua idade é: " + idade);
} catch (NumberFormatException ex) {
System.out.print("A idade informada não é válida.");
}
scanner.close();
}
}
public class Main {
public static void main(String[] args) {
Teclado teclado = new Teclado();
System.out.print("Digite um código: ");
int op = teclado.lerNumero();
do {
switch (op) {
case 1:
System.out.print("Digite outro código: ");
op = teclado.lerNumero();
break;
case 2:
System.out.println("Opção 2");
op = 0;
break;
}
} while (op != 0);
}
}
import java.util.Scanner;
public class Teclado {
Scanner sc = new Scanner(System.in);
public int lerNumero() {
int op = preencher(sc);
return op;
}
private int preencher(Scanner sc2) {
try {
return Integer.parseInt(sc2.next());
} catch (NumberFormatException e) {
System.out.println("Só números");
return preencher(sc2);
}
}
}