/** * Write a description of class CalculatorStack here. * * @author John Paxton * @version 1.0 */ import java.util.Stack; import java.util.EmptyStackException; public class CalculatorStack { CalculatorStack() { stack = new Stack (); } public void setString (String what) { toEvaluate = what; } public void evaluate() { char current; Integer number1; Integer number2; stack.clear(); error = false; try { for (int i = 0; i < toEvaluate.length(); i++) { current = toEvaluate.charAt(i); if ((current == '+') || (current == '-')) { number2 = stack.pop(); number1 = stack.pop(); if (current == '+') { stack.push ( number1 + number2 ); } else { stack.push( number1 - number2 ); } } else { stack.push(Character.getNumericValue(current)); } } result = stack.pop(); } catch (EmptyStackException e) { error = true; } if (!stack.empty()) { error = true; } } public void printResult() { System.out.print("Evaluating " + toEvaluate + " yields "); if (error) { System.out.println("an ERROR"); } else { System.out.println(result); } } private Stack stack; private String toEvaluate; private int result; private boolean error; }