import rebelsky.io.SimpleInput; import rebelsky.io.SimpleOutput; /** * A very simple calculator, intended as a sample solution for an * exercise in CS152 and as a test of my I/O package. *

* Copyright (c) 1998 Samuel A. Rebelsky. All rights reserved. * * @author Samuel A. Rebelsky * @version 1.1 of February 1998 */ public class Calculator { /** * Compute the effect of an operation on two integers. *
pre: The operation is "+", "-", "*", or "/". *
pre: The requested operation is legal (e.g., no division by 0). *
post: The appropriate value is returned. */ public int compute(String op, int left, int right) { if (op.equals("+")) { return left + right; } else if (op.equals("-")) { return left - right; } else if (op.equals("*")) { return left * right; } else if (op.equals("/")) { return left / right; } else { return 0; } } // compute /** * Repeatedly read expressions of the form VAL OP VAL and print * out the result. */ public static void main(String[] args) { // The object used to read input. SimpleInput in = new SimpleInput(); // The object used to write output. SimpleOutput out = new SimpleOutput(); // The first value read. int left; // The second value read. int right; // The operation. String op; // A calculator that performs the computation. Note that it is // possible for the main routine of a class to create an object // within that class. This is a typical Java programming // technique. Calculator calc = new Calculator(); // Print an introduction. out.println("This is a simple calculator. When prompted to do so,"); out.println("enter an expression of the form OP VAL OP. I will then"); out.println("compute an answer. Make sure to include a space around"); out.println("your operation."); out.println(); out.println("When you are done, hit control-D"); // Prompt the user. out.print("Expression: "); // Keep going until they hit control-D (end of file) while (true) { if (in.eof()) break; // Read the left operand. left = in.readInt(); if (in.eof()) break; // Read the operation op = in.readString(); if (in.eof()) break; // Read the right operand. right = in.readInt(); if (in.eof()) break; // Print out the expression out.print(left + " " + op + " " + right + " = "); // And compute out.println(calc.compute(op,left,right)); // Prompt the user. out.print("Expression: "); } // while // And we're done System.exit(0); } // main } // Calculator