Tratamento de exceções

2 respostas
H

No código abaixo que trato exceções como faço para tratar o botão cancelar para que ele funcione e também como faço para tratar quando o usuário apertar a tecla enter ao invés de digitar um número ou uma letra.

import java.util.InputMismatchException;

import javax.swing.JOptionPane;

public class Exemplo2DividePorZero2 {
	public static void main(String[] args) {

		boolean continua = true;
		do {
			try {
				int n1 = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite um número: "));
				int n2 = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o divisor: "));

				JOptionPane.showMessageDialog(null, n1 / n2);
				continua = false;

			} catch (NumberFormatException e1) {
				JOptionPane.showMessageDialog(null, "Os números devem ser inteiros");

			} catch (ArithmeticException e2) {
				JOptionPane.showMessageDialog(null, "O divisor deve ser diferente de zero");

			}
		} while (continua);

	}
}

2 Respostas

peczenyj

vc programa isso ué.

assim, vc tem um programa sequencial que tem um loop principal que faz

  1. le os dados
  2. executa uma ação ( no caso divide dois numeros )
  3. apresenta ambos o resultado
  4. em caso de erro ( qualquer erro ) vc mostra uma mensagem adequada
  5. vc poderia fazer isso em um loop mas por alguma razao vc forã continua para ser falso ( provavelmente para testar o seu programa ).

em teoria nao esta errado, porem vc tem que pensar no seguinte: vc tem que definir a interação do programa para com o usuario. por exemplo, vc vai pedir dois numeros e vai apresentar a divisão dos mesmos. se ele digitar algo que não faz sentido, o que vc pretende fazer? vc vai mostrar um erro e recomeçar o loop principal OU vc vai insistir até que ele digite algo que preste?

uma coisa que vc pode fazer é no seu programa vc criar um pequeno metodo chamado lerProximoInteiro( String mensagem )

nesse metodo vc retorna um inteiro. dentro dele vc tem um loop enquanto o camarada não digitar um numero.

caso seja null ( posso estar enganado ) isso significa que ele desistiu. como simbolizar que ele desistiu?

vc pode usar exceptions como throw new AcabaComIssoException() entre outras tecnicas.

é importante que vc divida os tipos de validação que vc quer fazer, uma coisa é vc ler o primeiro inteiro, o proximo inteiro, outra coisa é o cara digitar ‘seis’ ou 0 no denominador.

para que a interação com o usuario seja melhor, vc vai ter que coordenar objetos talvez mais complexos, que possam receber uma mascara com os valores que vc aceita, por exemplo.

H

Como eu faço para inserir estas recomendações no código?

Criado 6 de setembro de 2016
Ultima resposta 6 de set. de 2016
Respostas 2
Participantes 2