Reverse Polish Notation Calc: subtraction of two positive numbers returning a minus?

Ben Craig :

When performing a subtraction of two number on my Reverse Polish Notation Calculator, I get a minus number result, for example:

20 5 - = -15

Whereas, I would expect to see 15.

Can anyone see where I am going wrong with my code?

   else if (input.equals("-")) {
            int n1 = stack.pop();
            int n2 = stack.pop();
            int result = n1 - n2;

            stack.push((int)result);
        }
Eran :

The principle of a stack is LIFO (Last In First Out).

Therefore, when you first push 20 and then push 5 into the stack, the first pop will return 5 and the second pop will return 20. Therefore you calculate 5 - 20 instead of 20 - 5.

You should reverse the order of the operands in order to make the correct computation:

else if (input.equals("-")) {
    int n1 = stack.pop();
    int n2 = stack.pop();
    int result = n2 - n1;
    stack.push((int)result);
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=144669&siteId=1