您好我正在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";
}
}
`
我遇到麻烦的部分是我应该放在试用部分上的内容。基本上我把所有数字都推到了堆栈中,但是一旦我找到了一个运算符,我该如何合并两个操作数和运算符。
感谢。
答案 0 :(得分:-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) {
...