//******************************************************************** // Postfissa.java // // Usa uno stack per valutare un'espressione in notazione postfissa. //******************************************************************** import cs1.Keyboard; public class Postfissa { static Stack pila; public static void main(String[] args) { pila = new Stack(); System.out.println("Inserire l'espressione da esaminare"); System.out.println("(un elemento per riga, = per terminare)"); String riga = Keyboard.readString(); while (!riga.equals("=")) { elabora(riga); riga = Keyboard.readString(); } Integer risultato = (Integer) pila.pop(); System.out.println("Il risultato e' " + risultato); } public static void elabora(String s) { char primoCar = s.charAt(0); switch (primoCar) { case '+': case '-': case '*': case '/': Integer operDx = (Integer) pila.pop(); Integer operSx = (Integer) pila.pop(); Integer risultato = calcola(operSx, operDx, primoCar); pila.push(risultato); break; default: Integer numero = new Integer(s); pila.push(numero); break; } } public static Integer calcola(Integer x, Integer y, char oper){ Integer ris = null; switch (oper) { case '+': ris = new Integer(x.intValue() + y.intValue()); break; case '-': ris = new Integer(x.intValue() - y.intValue()); break; case '*': ris = new Integer(x.intValue() * y.intValue()); break; case '/': ris = new Integer(x.intValue() / y.intValue()); break; } return ris; } }