Exception in thread "main" java.lang.NumberFormatException: For input string:

Olá Pessoal!
Sou novato nessa área.

Estou tentando fazer um programa que adiciona valores em uma lista com o JOptionPane.
Ele ta rodando norma quando informo os valores do mesmo tipo da variável, mas quando atribuo um valor não numérico a variável “valor”.

  • O objetivo é tratar esse erro quando o usuário informar o valor diferente ao tipo da variável.

O error que mostra é esse:

Exception in thread "main" java.lang.NumberFormatException: For input string: "n", no caso quando atribuo “n” a variável “valor” que tem o tipo inteiro.

Meu código é:

List<Integer> valoresNumericos = new ArrayList<Integer>();
		String continuar = JOptionPane.showInputDialog("Informe \"sim\" para adicionar valor a lista");
		while (continuar.equalsIgnoreCase("sim")) {
			int valor = Integer.parseInt(JOptionPane.showInputDialog("Entre com o valor que deseja adicionar"));
			try {
				valoresNumericos.add(valor);
			} catch (NumberFormatException e) {
				JOptionPane.showMessageDialog(null, "Warning \nDigite apenas valores númericos");
				continuar = JOptionPane.showInputDialog("Digite \"sim\" para adicionar");
				valor = Integer.parseInt(JOptionPane.showInputDialog("Entre com o valor que deseja adicionar"));
			}
			continuar = JOptionPane.showInputDialog("Informe \"sim\" para adicionar valor a lista");
		}
		JOptionPane.showMessageDialog(null, "Os valores da lista são " + valoresNumericos);

O que eu gostaria era de tratar esse erro quando atribuo um valor que não seja numérico na variável “valor”, eu fiz um tratamento, mas meu catch não ta funcionando do jeito esperado.

Int valor = Integre.parseInt();

Deve está dentro do bloco:
try{
Int valor =Integre.parseInt();
}
Pois é essa linha de código que gerar o erro: NumberFormatException, caso a conversão falhe!

1 curtida

Jelson1 muito obrigado, era exatamente isso que faltava :grin:

@SD-Own De nada!:+1: