Code

package com.example;


public class Calculator {

protected enum Action {

ADD, SUBTRACT, DIVIDE, MULTIPLY, CLEAR, EQUALS

}

protected int displayBuffer;

protected int computeBuffer;

protected Action computeAction;

protected boolean displayReset;


public Calculator() {

this.displayBuffer = 0;

this.computeBuffer = 0;

this.computeAction = Action.CLEAR;

this.displayReset = true;

}

protected void updateDisplay(int value) {

if (this.displayReset == true) {

this.displayBuffer = value;

this.displayReset = false;

} else {

this.displayBuffer = this.displayBuffer * 10 + value;

}

System.out.println(this.displayBuffer);

}

protected void updateComputeBuffer() {

switch (this.computeAction) {

case ADD:

this.computeBuffer = this.computeBuffer + this.displayBuffer;

break;

case SUBTRACT:

this.computeBuffer = this.computeBuffer - this.displayBuffer;

break;

case DIVIDE:

this.computeBuffer = this.computeBuffer / this.displayBuffer;

break;

case MULTIPLY:

this.computeBuffer = this.computeBuffer * this.displayBuffer;

break;

default:

this.computeBuffer = this.displayBuffer;

break;

}

}

public void one() {

this.updateDisplay(1);

}


public void two() {

this.updateDisplay(2);

}

public void three() {

this.updateDisplay(3);

}

public void four() {

this.updateDisplay(4);

}

public void five() {

this.updateDisplay(5);

}

public void six() {

this.updateDisplay(6);

}

public void seven() {

this.updateDisplay(7);

}

public void eight() {

this.updateDisplay(8);

}

public void nine() {

this.updateDisplay(9);

}

public void zero() {

this.updateDisplay(0);

}

public void add() {

this.updateComputeBuffer();

this.computeAction = Action.ADD;

this.displayReset = true;

System.out.println("+");

}

public void subtract() {

this.updateComputeBuffer();

this.computeAction = Action.SUBTRACT;

this.displayReset = true;

System.out.println("-");

}

public void multiply() {

this.updateComputeBuffer();

this.computeAction = Action.MULTIPLY;

this.displayReset = true;

System.out.println("x");

}

public void divide() {

this.updateComputeBuffer();

this.computeAction = Action.DIVIDE;

this.displayReset = true;

System.out.println("/");

}

public void clear() {

this.computeBuffer = 0;

this.displayBuffer = 0;

this.computeAction = Action.CLEAR;

this.displayReset = true;

System.out.println(this.displayBuffer);

}

public void equals() {

this.updateComputeBuffer();

this.displayBuffer = this.computeBuffer;

this.computeBuffer = 0;

this.computeAction = Action.EQUALS;

this.displayReset = false;

System.out.println("=");

System.out.println(this.displayBuffer);

}

/**

* @param args

*/

public static void main(String[] args) {

Calculator calc = new Calculator();

calc.two();

calc.one();

calc.add();

calc.one();

calc.equals();

calc.add();

calc.one();

calc.one();

calc.one();

calc.equals();

calc.multiply();

calc.two();

calc.zero();

calc.nine();

calc.equals();

}


}


package com.example;


public class MemoryCalculator extends Calculator {


private int memoryBuffer;

public MemoryCalculator() {

super();

this.memoryBuffer = 0;

}

public void mc() {

this.memoryBuffer = 0;

System.out.println("mc");

}

public void mplus() {

this.memoryBuffer = this.memoryBuffer + this.displayBuffer;

System.out.println("m+");

}

public void mminus() {

this.memoryBuffer = this.memoryBuffer - this.displayBuffer;

System.out.println("m-");

}

public void mr() {

this.displayBuffer = this.memoryBuffer;

this.displayReset = false;

System.out.println("mr");

System.out.println(this.displayBuffer);

}


/**

* @param args

*/

public static void main(String[] args) {

MemoryCalculator calc = new MemoryCalculator();

calc.two();

calc.one();

calc.add();

calc.one();

calc.equals();

calc.add();

calc.one();

calc.one();

calc.one();

calc.equals();

calc.mplus();

calc.multiply();

calc.two();

calc.zero();

calc.nine();

calc.equals();

calc.mr();

}

}

Comments