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(); } } |