为什么我的前缀表达评估器程序会错误地计算加法或减法?

我有一个程序打算接收包含前缀操作(即,用“ + 4 2”代替“ 4 + 2”,即中缀)的元素的Queue ,然后输出整数答案(只要假设永远不需要加倍,好吗?)。它适用于任何乘法或除法运算,但不能执行任何加法或减法运算,更糟糕的是,它不一致。例如,“-5 1”的输出为5,这表明它要加一个额外的整数,但是“-5 2”的输出为2,这是一个太低的整数。我只是不明白此错误的逻辑在哪里?

 public static int eval(Queue<String> s){
        String a=s.toString();
        String b= a.replaceAll("\\[","").replaceAll("\\]","").replace(", "," ");
        StringBuilder c=new StringBuilder();
        c.append(b);
        c.reverse();
        Stack<Integer> stack=new Stack<>();
        for (int i=0; i<c.length();i++){
            char current=c.charAt(i);
            if (current==' ')
                continue;
            if (current=='*'||current=='/'||current=='+'||current=='-'){
                Integer one = stack.pop();
                Integer two = stack.pop();
                Integer maybe;
                switch (current){
                    case '+':
                        maybe=one+two;
                    case '-':
                        maybe=one-two;
                    case '*':
                        maybe=one*two;
                    case '/':
                        maybe=one/two;
                        break;
                    default:
                       maybe=one;
                }
            stack.push(maybe);
            } else {
                StringBuilder maybe=new StringBuilder();
                while(Character.isDigit(current)){
                    maybe.append(current);
                    i++;
                    current=c.charAt(i);
                }
                i--;
                Integer n=Integer.parseInt(maybe.reverse().toString());
                stack.push(n);
            }
        }
        return stack.pop();
        }
    }

编辑:注意:它也只能输出简单的两个整数,一个运算符,方程式,但是我可以理解如何更改它。