I'm confused. From the output you gave, your program is working correctly, but your expectations are not correct.
Let's evaluate the expression "/-421":
1. Operator detected, '/', push onto stack:
+----+
| / |
+====+
Operator detected, '-', push onto stack:
+---+
| - |
+---+
| / |
+===+
Number detected, push onto stack since previous operator requires 2 parameters.
+---+
| 4 |
+---+
| - |
+---+
| / |
+===+
Number dectected, the 2nd of of two operators.
Pop the remaining operand off the stack, 4.
Pop the operation off the stack evaluate with the parameters:
result = 4 - 2 --> 1
Push result on the stack.
+---+
| 2 |
+---+
| / |
+===+
Number detected, the 2nd parameter of 2 for the division operator.
Pop the number from the stack, this becomes the 1st parameter to the division operation.
Pop the operation off the stack and evaluate with the parameters:
result = 2 / 1 --> 2
Push the result on the stack.
+---+
| 2 |
+===+
End of expression reached, pop off result and print:
2
Edit 1:
You can confirm your program's operation by printing the stack (one item per line) before analyzing the next token.