0

您好,我正在练习一些 Java 堆栈,并且正在尝试解决有关堆栈的问题。我试图编写一个采用后缀表示法并将其转换为中缀的方法。这是我到目前为止所拥有的:

`
public void convertion() {
        Stack<Integer> stack;          // For evaluating the expression.
        stack = new Stack<Integer>();  // Make a new, empty stack.

        Scanner scan = new Scanner(postfix);

        int t1, t2 = 0;     //Operands

        boolean check = false;


        while (scan.hasNext() && !check) {
            if (scan.hasNextInt()) {
                int operand = scan.nextInt();
                stack.push(operand);
            } else {
                char operator = scan.next().charAt(0);
                try {

                        while(stack.)


                } catch (EmptyStackException e) {
                    answer = "Malformed postfix expression";
                    check = true;
                }

            }
        }
        scan.close();
        try {
            answer = "" + stack.pop();
        } catch (EmptyStackException e) {
            answer = "Malformed postfix expression";
        }
    }
`

我遇到问题的部分是我应该在尝试部分上放什么。基本上我将我找到的所有数字推入堆栈,但是一旦我找到一个运算符,我如何合并两个操作数和运算符。

谢谢。

4

1 回答 1

-1

您想弹出顶部的两个堆栈元素,对它们执行适当的操作,然后推回结果:

try {
    int o1 = stack.pop().intValue();
    int o2 = stack.pop().intValue();
    switch (operator) {
        case '+': stack.push(new Integer(o1 + o2));
                  break;
        case '-': stack.push(new Integer(o1 - o2));
                  break;
        ...
    }
}
catch (EmptyStackException e) {
    ...
于 2013-04-06T02:43:49.723 回答