java根据生成的 后缀表达式计算结果
时间: 2024-10-07 22:05:47 浏览: 26
在Java中,计算由后缀表达式(逆波兰表示法)得到的结果,可以使用栈来实现。基本思路是,从后缀表达式的末尾开始遍历,遇到数字则入栈,遇到运算符则弹出栈顶的两个元素进行相应的运算,并把结果推回栈中。以下是简单的步骤:
1. 初始化一个空栈。
2. 遍历后缀表达式的每个字符:
- 如果是数字,直接压入栈中。
- 如果是运算符,弹出栈顶的两个数字,根据运算符进行相应运算(例如,加法 `+` 对应 `a + b` 的运算就是 `result = a + b`),并将结果压回栈中。
3. 循环结束后,栈中剩下的唯一元素就是计算结果。
以下是一个简单的Java代码片段实现这一过程:
```java
import java.util.Stack;
public class PostfixCalculator {
public static int calculate(String postfixExp) {
Stack<Integer> stack = new Stack<>();
for (char c : postfixExp.toCharArray()) {
if (Character.isDigit(c)) {
// Push numbers onto the stack
stack.push(Integer.parseInt(String.valueOf(c)));
} else {
// Pop two numbers from the stack, perform operation, and push the result back
int num2 = stack.pop();
int num1 = stack.pop();
switch (c) {
case '+':
stack.push(num1 + num2);
break;
case '-':
stack.push(num1 - num2);
break;
case '*':
stack.push(num1 * num2);
break;
case '/':
stack.push(num1 / num2);
break;
}
}
}
return stack.pop(); // Return the final result
}
// 示例用法
public static void main(String[] args) {
String postfixExp = "2 3 + 4 *";
System.out.println("Result: " + calculate(postfixExp)); // 输出 20
}
}
```
阅读全文