Está en la página 1de 1

package evalpost;

import java.util.Stack;

public class EvalPost {


public static void main(String[] args) {

//Entrada (Expresin en Postfija)


String expr = "2 23 6 + * 1 -"; // equivale a 2*(23+6)-1
String[] post = expr.split(" ");

//Declaracin de las pilas


Stack < String > E = new Stack < String > (); //Pila entrada
Stack < String > P = new Stack < String > (); //Pila de operandos

//Aadir post (array) a la Pila de entrada (E)


for (int i = post.length - 1; i >= 0; i--) {
E.push(post[i]);
}

//Algoritmo de Evaluacin Postfija


String operadores = "+-*/%";
while (!E.isEmpty()) {
if (operadores.contains("" + E.peek())) {
P.push(evaluar(E.pop(), P.pop(), P.pop()) + "");
}else {
P.push(E.pop());
}
}

//Mostrar resultados:
System.out.println("Expresion: " + expr);
System.out.println("Resultado: " + P.peek());

private static int evaluar(String op, String n2, String n1) {


int num1 = Integer.parseInt(n1);
int num2 = Integer.parseInt(n2);
if (op.equals("+")) return (num1 + num2);
if (op.equals("-")) return (num1 - num2);
if (op.equals("*")) return (num1 * num2);
if (op.equals("/")) return (num1 / num2);
if (op.equals("%")) return (num1 % num2);
return 0;
}

También podría gustarte