You are printing and clearing the stack for every character of your input expression. That's probably not what you want.
You have this in your parsing loop:
while (!(stack.isEmpty())) {
System.out.print(stack.pop());
}
Having that bit where it is essentially just prints out the current character (which was just pushed onto an empty stack) then clears the stack (by popping everything until it is empty).
You probably mean to move that outside the loop, after it.
You want to parse the whole expression and build the stack, then print it, so you should do exactly that in your code.