后缀式求值 java版
时间: 2024-10-12 17:10:02 浏览: 34
在Java中,后缀表达式的求值通常通过使用堆栈(Stack)数据结构来实现。你可以创建一个名为`evaluatePostfix`的函数,步骤如下:
```java
import java.util.Stack;
public class PostfixEvaluator {
public static double evaluate(String postfixExpression) {
Stack<Double> stack = new Stack<>();
for (String token : postfixExpression.split(" ")) {
if (isNumber(token)) { // 如果是数字,直接压入栈
stack.push(Double.parseDouble(token));
} else { // 否则是运算符,弹出栈顶两个元素进行计算
double b = stack.pop();
double a = stack.pop();
switch (token) {
case "+":
stack.push(a + b);
break;
case "-":
stack.push(a - b);
break;
case "*":
stack.push(a * b);
break;
case "/":
stack.push(a / b);
break;
}
}
}
// 检查栈是否为空,若为空说明操作数不足,返回0
return stack.isEmpty() ? 0 : stack.pop();
}
private static boolean isNumber(String s) {
try {
Double.parseDouble(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
}
```
你可以像这样使用这个函数:
```java
String expression = "3 5.4 2.2 * +";
double result = PostfixEvaluator.evaluate(expression);
System.out.println(result); // 输出:15.3
```
这个函数假设输入的后缀表达式合法。如果输入包含非法字符或操作数不足,你需要在实际应用中添加错误检查和异常处理。
阅读全文