Try/Catch persistente

1 resposta
J

Olá pessoal…

Estou com uma dúvida sobre o TRY/CATH

Observem o trecho do meu código

public static Aluno cadastrarAluno() {

Aluno aluno = new Aluno();

	aluno.setNome(JOptionPane.showInputDialog(null,"NOME"));

	try {

		aluno.setIdade(Integer.parseInt(JOptionPane.showInputDialog(null,
				"IDADE")));

	} catch (NumberFormatException e) {

		JOptionPane.showMessageDialog(null, "Entrada inválida para IDADE");

		aluno.setIdade(Integer.parseInt(JOptionPane.showInputDialog(null,
				"IDADE")));
	}

Nesse caso o TRY/CATCH impossibilita a entrada de letras na caixa do JOptionPane designada para o IDADE…

Caso o usuário entre com letras nessa caixa, o programa retorna uma mensagem dizendo que a

entrada é invalida. E novamente pede para que o usuário entra com a IDADE…

Atá aí tudo bem…

[b][i]Minha pergunta é: Como é que eu faço pra que o TRY/CATCH seja persistente…

pois se o usuário entrar com letras após a messagem de erro para o campo da IDADE

aí sim o código é encerrado por erro, pois o TRY/CATH só controla o erro uma vez…

Tem como inserir um WHILE, por exemplo, para que o usuário só saia desse campo quando digitar

a informação certa (nesse caso inserir IDADE)!!![/i][/b]

Agradeço desde já…

jonhzinhOo

1 Resposta

BrunoBastosPJ

Neste caso você vai ter que usar um loop mesmo. O JOptionPane é bloqueante, então você não vai travar sua aplicação devido a um loop infinito.
Existem outras maneiras de fazer, vou colocar uma delas:

boolean validAge = false;
do {
  try {

    aluno.setIdade(Integer.parseInt(JOptionPane.showInputDialog(null,"IDADE")));
    validAge = true;
  } catch (NumberFormatException e) { 
    JOptionPane.showMessageDialog(null, "Entrada inválida para IDADE"); 
  }
}
while(!validAge);
Criado 12 de maio de 2009
Ultima resposta 13 de mai. de 2009
Respostas 1
Participantes 2