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
*/
public double performOperation(UnaryOperator<Double> op) throws IllegalStateException {
// TODO
return 0.0;
// if (this.getOperandCount() == 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
*/
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
*/
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());
}
}