• Author: Graham Mitchell
• Filename: Calculator.java

### Project: Calculator

Write a calculator program. A minimal calculator will support the following functions:

• numbers with decimals (not just integers)
• addition (1 + 2 is 3)
• subtraction (12 - 4 is 8)
• multiplication (33 * 2 is 66)
• division (3 / 8 is 0.375)
• exponents (2 ^ 3 is 8)
• error messages when you do something wrong

Your calculator should keep on running until explicitly told to quit. I suggest typing a zero as the first operand to cause it to quit, i.e.

>2 + 3
5
>4 * 9
36
>0 + 2
Bye, now.

Programs may support other features if desired. Suggested other functions to add include:

• modulus (10 % 3 is 1)
• factorials (4 ! is 4*3*2*1, a.k.a. 24)
• trigonometric functions (sin,cos,tan)
• square roots
• negation (- -3 is 3)
• angles in degrees or radians
• a help feature to display legal syntax and supported functions
• previous result used as first operand
• the ability to store and recall results
• rounding
• logarithms
• arbitrary roots
• conversion from base 10 to binary (for integers only)

Interested students might look at the documentation for java.lang.Math to find help with some of the above functions. Also, some may wonder how to deal with the first operand possibly being a character or a number. That is, how can your program support phrases like "2 + 3" (double String double) and "sin 30" (String double) at the same time? Well, if you read in everything as a String, then I've written some functions you can use to convert to other things.

Numeric.isNumeric( String s ) // returns true if s is a number

Numeric.isInteger( String s ) // returns true if s is an integer

Numeric.isDouble( String s ) // returns true if s is a double

Double.valueOf( String s ) // returns the double that s represents

Integer.valueOf( String s ) // returns the int that s represents

## What to avoid

Any program which presents me with a screen like the following will not receive a very good score.

Enter the function you wish to perform.
2) subtraction
3) multiplication
4) division
5) quit