Criei dois programas com a mesma finalidade. A questão é que o primeiro compilou da forma que eu esperava e o segundo só me retorna a primeira opção ainda que eu escolha outra. Gostaria de saber onde está o erro no segundo.
O primeiro é esse:
OBJETO:
package ac;
import javax.swing.JOptionPane;
public class Conversao1 {
private double vr, vd, cd;
public void setVr (double vr) {
this.vr = vr;
}
public double getVr(){
return vr;
}
public void setVd (double vd) {
this.vd = vd;
}
public double getVd() {
return vd;
}
public void setCd (double cd) {
this.cd = cd;
}
public double getCd() {
return cd;
}
public void escolherConversao() {
String ec;
ec = JOptionPane.showInputDialog("Digite DR para converter de Dólar para Real." + "\nDigite RD para converter de Real para Dólar." + "\nDigite C para cancelar.");
if (ec.equalsIgnoreCase("RD")) {
entradaReal();
conversaoRD();
} else if (ec.equalsIgnoreCase("DR")) {
entradaDolar();
conversaoDR();
} else {
JOptionPane.showMessageDialog(null, "Volte sempre.");
}
}
public void entradaReal() {
vr = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor em reais que deseja converter:"));
cd = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da cotação atual do Dólar:"));
}
public void entradaDolar() {
vd = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor em dólares que deseja converter:"));
cd = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da cotação atual do Dólar:"));
}
public void conversaoDR() {
vr = vd * cd;
JOptionPane.showMessageDialog(null,"O valor de $" + vd + " em Real vale R$" + vr);
}
public void conversaoRD() {
vd = vr / cd;
JOptionPane.showMessageDialog(null,"O valor de R$" + vr + " em Dólar vale $" + vd);
}
}
INSTANCIAÇÃO DO OBJETO:
package ac;
public class Convertendo1 {
public static void main(String [] args) {
Conversao1 c1 = new Conversao1 ();
c1.escolherConversao();
}
}
O segundo é esse:
OBJETO:
package ac;
import javax.swing.JOptionPane;
public class Conversao {
private double vr, vd, cd;
int ec;
public void setVr (double vr) {
this.vr = vr;
}
public double getVr(){
return vr;
}
public void setVd (double vd) {
this.vd = vd;
}
public double getVd() {
return vd;
}
public void setCd (double cd) {
this.cd = cd;
}
public double getCd() {
return cd;
}
public void escolherConversao() {
if (ec == 0) {
ec = JOptionPane.showConfirmDialog(null, "Conversão de Real para Dólar:", "Opções", JOptionPane.YES_NO_CANCEL_OPTION);
entradaReal();
conversaoRD();
} else if (ec == 1) {
ec = JOptionPane.showConfirmDialog(null, "Conversão de Dólar para Real:", "Opções", JOptionPane.YES_NO_CANCEL_OPTION);
entradaDolar();
conversaoDR();
} else {
ec = JOptionPane.showConfirmDialog(null, "Volte sempre", "Opções", JOptionPane.CANCEL_OPTION);
}
}
public void entradaDolar() {
vd = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor em dólares que deseja converter:"));
cd = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da cotação atual do Dólar:"));
}
public void entradaReal() {
vr = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor em reais que deseja converter:"));
cd = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor da cotação atual do Dólar:"));
}
public void conversaoDR() {
vr = vd * cd;
JOptionPane.showMessageDialog(null,"O valor de $" + vd + " em Real vale R$" + vr);
}
public void conversaoRD() {
vd = vr / cd;
JOptionPane.showMessageDialog(null,"O valor de R$" + vr + " em Dólar vale $" + vd);
}
}
INSTANCIAÇÃO DO OBJETO:
package ac;
public class Convertendo {
public static void main(String [] args) {
Conversao c1 = new Conversao ();
c1.escolherConversao();
}
}
No momento em que a caixa de mensagens aparece e todas as vezes que eu clico em qualquer um dos três botões sempre me direciona pra opção de conversão de real para dólar, coisa que seria normal ao clicar o primeiro botão. E depois que eu clico o botão SIM me direciona para eu entrar com um valor e se eu quiser cancelar o programa clicando em CANCELAR, dá a mensagem de erro na saída do Java ao invés de aparecer a mensagem “Volte sempre.”.
Qual seria a solução pra eu usar o JOptionPaneConfirmDialog e clicar no botão NÃO e ser direcionado para os métodos entradaDolar(); e conversaoDR(); e ao clicar em CANCELAR o programa encerrar normalmente ao invés de apresentar mensagem de erro na saída?