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).
Swing
R
4 Respostas
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
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