Swing

4 respostas
R

Fiz um código para conversão de valores termométricos, mas, eu quero que quando a pessoa digita algum valor errado, mostre a mensagem de erro e repita o programa! Mas quando ela clicar no botão cancelar, que o programa feche! Coloquei um continue no catch, mas o botão cancelar deixa de funcionar, e se colocar “System.exit(0);”, aparece a mensagem do “.showMessageDialog” como o tratamento do catch de qualquer forma (que eu não quero).

4 Respostas

ViniGodoy

Posta o código.

R
public class CalculadoraTemperatura {
    public static  int ii;
        public static void main(String[] args) {
        String i;
        boolean ok = true;
        
        while(ok != false){
        i = JOptionPane.showInputDialog(null,"Selecione uma das opções de conversão abaixo:\n"
                + "1) Celsius - Fahrenheit\n"
                + "2) Celsius - Kelvin\n"
                + "3) Fahrenheit - Celsius\n"
                + "4) Fahrenheit - Kelvin\n"
                + "5) Kelvin - Celsius\n"
                + "6) Kelvin - Fahrenheit\n\n", "Conversão", 1);
               
        try {
            ii = Integer.parseInt(i);
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "ERRO");
            continue;
        } catch(NullPointerException e){
            System.exit(0);
        }
        
        switch(ii){
            case 1:
                JOptionPane.showMessageDialog(null,"O resultado é: " + CelsiusFahrenheit());
                break;
            case 2:
                JOptionPane.showMessageDialog(null,"O resultado é: " + CelsiusKelvin());
                break;
            case 3:
                JOptionPane.showMessageDialog(null,"O resultado é: " + FahrenheitCelsius());
                break;
            case 4:
                JOptionPane.showMessageDialog(null,"O resultado é: " + FahrenheitKelvin());
                break;
            case 5:
                JOptionPane.showMessageDialog(null,"O resultado é: " + KelvinCelsius());
                break;
            case 6:
                JOptionPane.showMessageDialog(null,"O resultado é: " + KelvinFahrenheit());
                break;
            default:
                JOptionPane.showMessageDialog(null,"Opção Inválida");
                
        }
       }
      }

Linha 16

ViniGodoy

Coloque seu try catch num while:

while (true) {
    i = JOptionPane.showInputDialog(null,"Selecione uma das opções de conversão abaixo:\n"  
                + "1) Celsius - Fahrenheit\n"  
                + "2) Celsius - Kelvin\n"  
                + "3) Fahrenheit - Celsius\n"  
                + "4) Fahrenheit - Kelvin\n"  
                + "5) Kelvin - Celsius\n"  
                + "6) Kelvin - Fahrenheit\n\n", "Conversão", 1);

    if (i == null) {
        System.exit(0);
    }


    try {  
        ii = Integer.parseInt(i);  
        break;
    } catch (NumberFormatException e){  
        JOptionPane.showMessageDialog(null, "ERRO");    
    }
}
R

Eu aprendi agora sobre esse if, então tentei:

try { ii = Integer.parseInt(i); } catch (NumberFormatException e){ if (i == null){ continue; } else { JOptionPane.showMessageDialog(null, "ERRO"); System.exit(0); } }

Porém, se eu tento aplicar o mesmo catch nos outros métodos, não consigo utilizar o [color=red]continue[/color] dentro do if.

Resolvido: Descobri que é necessário estar dentro de um loop!!! Desculpe!!!

Obrigado a atenção!

Criado 31 de agosto de 2014
Ultima resposta 31 de ago. de 2014
Respostas 4
Participantes 2