hola a todos se que es algo facil :-X pero no consigo sacarlo :-\ espero y me puedan ayudar mi codigo
para evaluar una expresion en postfijo
public static void main
(String arg
[]){ String expres
= "362*4/+"; //Resultado debe ser 6 System.
out.
println("Evaluacion de una expresion en posfijo"); System.
out.
println("\n Exp posfija:"+expres
+"\n"); //convertir array expresion
char[]expresiion = expre.toCharArray();
//Pila de salida y pila de entrada
char simboloEntrada,op1,op2,valor=0;
MyFirstStack pilita = new MyFirstStack(expresiion.length);
for(int a=0;a<expresiion.length;a++){
simboloEntrada = expre.charAt(a);
if(simboloEntrada != '+' && simboloEntrada != '-' && simboloEntrada != '*' && simboloEntrada != '/'){
pilita.push(simboloEntrada);
}
else {
op1= pilita.pop();
op2= pilita.pop();
valor=(char)evaluate(simboloEntrada,op1,op2);
pilita.push(valor);
}
}
System.
out.
print("El valor:"+valor
);
}
static int evaluate (char cad, char a, char b ){
int op1=a-48;
int op2=b-48;
if(cad== '-')
return op1-op2;
if(cad== '+')
return op1+op2;
if(cad== '/')
return op1/op2;
if(cad== '*')
return op1*op2;
return 0;
}
}
Muchas gracias.
¿Intentaste intercambiar el orden de las instrucciones?
op1 = pilita.pop();
op2 = pilita.pop();
Creo que por ahí anda el error.
Suponte tu que tienes esto en tu pila.
12/4
[12][4][/]
Luego haces
operator = pop() devuelve el '/'
op1 = pop() devuelve '4'
op2 = pop() devuelve '12'
Finalmente
resultado = op1 / op2 ( osea 4 / 12)
Saludos!