Há um tempo eu quebro cabeça tentando fazer com que minha calculadora resolva expressões do tipo… 1+3-2*4/2= 4
queria que vocês me dessem uma luz…
[code]//Parte da Interface
verifica =false;
//Botão 1
if(e.getSource()==btn[12]){
umaParcela = c.obtemParcela(verifica, visor, "1");
verifica = c.getVerifica();
}
//Botão 2
if(e.getSource()==btn[13]){
umaParcela = c.obtemParcela(verifica, visor, "2");
verifica = c.getVerifica();
}
//Botão 3
if(e.getSource()==btn[14]){
umaParcela = c.obtemParcela(verifica, visor, "3");
verifica = c.getVerifica();
}
//Botão =
if(e.getSource()==btn[18]){
String resultado = null;
if (oper == '+')
resultado = c.controle(new Soma(), outraParcela, umaParcela);
if (oper == '-')
resultado = c.controle(new Subtracao(), outraParcela, umaParcela);
if (oper == '*')
resultado = c.controle(new Multiplicacao(), outraParcela, umaParcela);
if (oper == '/')
resultado = c.controle(new Divisao(), outraParcela, umaParcela);
visor.setText(resultado);
umaParcela = resultado;
outraParcela="";
verifica = true;
}
//Botão +
if(e.getSource()==btn[19]) {
oper = '+';
outraParcela = umaParcela;
umaParcela = "0";
verifica = true;
}
//Parte da Classe Controle
public String obtemParcela(Boolean ver, JLabel lb_visor, String str_dig)
{
String res = “”;
verifica = ver;
if (!verifica){
if(lb_visor.getText() != “0”){
res = lb_visor.getText() + str_dig;;
lb_visor.setText(res);
}
else{
lb_visor.setText(str_dig);
res = lb_visor.getText();
}
}
else{
verifica = false;
lb_visor.setText("");
lb_visor.setText(str_dig);
res = lb_visor.getText();
}
return res;
}
public Boolean getVerifica(){
return verifica;
}
public String controle(Operacao op, String operando1, String operando2){
return op.calcule(operando1,operando2);
}
}
//Classe Operacao
public abstract class Operacao {
public double strDb(String sn){
return Double.parseDouble(sn);
}
public abstract String calcule(String primeiraParcela, String segundaParcela);
}
//Classe Soma
public class Soma extends Operacao{
public String calcule(String pp, String sp)
{
double som;
som = strDb(pp) + strDb(sp);
return Double.toString(som);
}
} [/code]
