1  import java.util.Scanner;
  2  import java.util.Stack;
  3  
  4  /**
  5     This calculator uses the reverse polish notation.
  6  */
  7  public class Calculator
  8  {
  9     public static void main(String[] args)
 10     {
 11        Scanner in = new Scanner(System.in);
 12        Stack<Integer> results = new Stack<Integer>();
 13        System.out.println("Enter one number or operator per line, Q to quit. ");
 14        boolean done = false;
 15        while (!done)
 16        {         
 17           String input = in.nextLine();
 18  
 19           // If the command is an operator, pop the arguments and push the result
 20  
 21           if (input.equals("+"))
 22           {
 23              results.push(results.pop() + results.pop());
 24           }
 25           else if (input.equals("-"))
 26           {
 27              Integer arg2 = results.pop();
 28              results.push(results.pop() - arg2);
 29           }
 30           else if (input.equals("*") || input.equals("x"))
 31           {
 32              results.push(results.pop() * results.pop());
 33           }
 34           else if (input.equals("/"))
 35           {
 36              Integer arg2 = results.pop();
 37              results.push(results.pop() / arg2);
 38           }
 39           else if (input.equals("Q") || input.equals("q"))
 40           {
 41              done = true;
 42           }
 43           else 
 44           {
 45              // Not an operator--push the input value
 46              
 47              results.push(Integer.parseInt(input));
 48           }
 49           System.out.println(results);
 50        }
 51     }
 52  }