Problemas com Exception

9 respostas
crisbortolanza
Estou no início de um teste meu:
import javax.swing.JOptionPane;

class conv {
	public static void main(String args[]) {	
		String texto = JOptionPane.showInputDialog(null, "Digite os números a serem convertidos:","Conversão de Decimal para Binário", JOptionPane.WARNING_MESSAGE);
		int decimal = Integer.parseInt(texto);
		if (decimal==0) {
			JOptionPane.showMessageDialog(null, "O código binário é 0", "Convertido", JOptionPane.INFORMATION_MESSAGE);
		}else if (decimal==1) {
			JOptionPane.showMessageDialog(null, "O código binário é 1", "Convertido", JOptionPane.INFORMATION_MESSAGE);
		}else {
			JOptionPane.showMessageDialog(null, "O código binário é ?", "Problemas", JOptionPane.INFORMATION_MESSAGE);
		}try {
			decimal = Integer.parseInt(texto);
		}catch (NumberFormatException e) {
			JOptionPane.showMessageDialog(null, "Digite apenas números!!!", "Problemas", JOptionPane.ERROR_MESSAGE);
		}
	}
}
Como vocês podem ver eu estava tentando enviar uma mensagem de erro caso digitassem letras ao invés de números, mas não estou conseguindo, alguém pode me ajudar, acho que o try não está certo..

Vlw

9 Respostas

Marky.Vasconcelos

Se a excessão NumberFormatException está sendo lançada é no primeiro Integer.parseInt(texto), mude o try para antes dele.

crisbortolanza

Vlw cara era isso mesmo, eu já tinha tentado deixar o try lá em cima, mas sempre depois do Integer.parseInt(texto)
Vlw de novo…

crisbortolanza

Tá eu fiz uma pergunta onde o cara só pode digitar números… Sendo assim quando ele digita letras da um erro em exception, mas quando eu dou OK na caixinha fecha tudo…
Não tem como aparecer o erro e quando eu dar OK na caixa de erro, pedir novamente para digitar a resposta???

crisbortolanza

Não sei se fui bem claro nisso…
Quando executo a primeira telinha pede para digitar números, se digito números dá certo…
Quando digito letras aparece uma telinha dizendo: Digite apenas números (showMessageDialog), daí eu aperto OK e fecha essa tela de erro, mas eu queria que aparecece novamente a primeira telinha que pede para digitar números…
Vlw…

leoramos

Joga o bloco dentro de um while que teste essa condição =)

crisbortolanza

Na verdade eu usei um try para ver se o que foi digitado era número ou não, e um catch para o NumberFormatException e… isso muda alguma coisa???
vlw…

crisbortolanza

O while é uma estrutura de repetição?
Daí no caso só iria repetir se o cara digitasse letra ou sempre???

crisbortolanza

Tá eu não entendi o que eu tenho que fazer
Alguém me explica???

Marky.Vasconcelos

Eu sei duas soluções a primeira é com um while que tenta até ser apenas numeros

é algo assim:

boolean onlyNumbers = false;
int t;
while(onlyNumbers == false){
try{
t = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um numero:"));
onlyNumbers = true;
}catch(Exception e){
onlyNumbers = false;
}
}

Ou a maneira mais viavel é criar um dialog que ao invés do JTextField para digitar tenha um FormattedTextField com uma mascara que aceite apenas numeros.

Eu não sei direiro como fazer essa segunda mas á a melhor ideia

Criado 31 de julho de 2008
Ultima resposta 3 de ago. de 2008
Respostas 9
Participantes 3