Implement calculator logic

This commit is contained in:
Oystein Kristoffer Tveit 2021-09-05 19:29:09 +02:00
parent 84f0058272
commit a0d1e71ed5
1 changed files with 17 additions and 3 deletions

View File

@ -74,8 +74,13 @@ public class Calc {
* @throws IllegalStateException if the operand stack is empty * @throws IllegalStateException if the operand stack is empty
*/ */
public double performOperation(UnaryOperator<Double> op) throws IllegalStateException { public double performOperation(UnaryOperator<Double> op) throws IllegalStateException {
// TODO // if (this.getOperandCount() == 0)
return 0.0; if (this.operandStack.isEmpty())
throw new IllegalStateException("Cannot perform operation " + op + " because of missing operands");
Double result = op.apply(this.popOperand());
this.pushOperand(result);
return result;
} }
/** /**
@ -103,7 +108,13 @@ public class Calc {
* @throws IllegalStateException if the operand count is less than two * @throws IllegalStateException if the operand count is less than two
*/ */
public void swap() { public void swap() {
if (this.getOperandCount() < 2)
throw new IllegalStateException("Not enough operands to swap");
Double x = this.popOperand();
Double y = this.popOperand();
this.pushOperand(x);
this.pushOperand(y);
} }
/** /**
@ -112,6 +123,9 @@ public class Calc {
* @throws IllegalStateException if the operand stack is empty * @throws IllegalStateException if the operand stack is empty
*/ */
public void dup() { public void dup() {
// TODO if (this.operandStack.isEmpty())
throw new IllegalStateException("Cannot duplicate top operand because there are no operands left");
this.pushOperand(this.peekOperand());
} }
} }