逆波兰表达式计算 java
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
逆波兰表达式计算 java
逆波兰表达式是一种将运算符写在操作数之后的表示方法,计算逆波兰表达式可以使用栈来实现。
下面是一个使用Java实现逆波兰表达式计算的例子:
```java
import java.util.Stack;
public class RPNCalculator {
public static double evaluateRPN(String[] tokens) {
Stack<Double> stack = new Stack<>();
for (String token : tokens) {
if (isOperator(token)) {
double operand2 = stack.pop();
double operand1 = stack.pop();
double result = calculate(token, operand1, operand2);
stack.push(result);
} else {
stack.push(Double.parseDouble(token));
}
}
return stack.pop();
}
private static boolean isOperator(String token) {
return token.equals("+") || token.equals("-") ||
token.equals("*") || token.equals("/");
}
private static double calculate(String operator, double operand1, double operand2) {
switch (operator) {
case "+":
return operand1 + operand2;
case "-":
return operand1 - operand2;
case "*":
return operand1 * operand2;
case "/":
return operand1 / operand2;
default:
throw new IllegalArgumentException("Unknown operator: " + operator);
}
}
public static void main(String[] args) {
String[] tokens = {"2", "1", "+", "3", "*"};
double result = evaluateRPN(tokens);
System.out.println("Result: " + result);
String[] tokens2 = {"4", "13", "5", "/", "+"};
double result2 = evaluateRPN(tokens2);
System.out.println("Result: " + result2);
}
}
```
这个例子演示了如何使用栈来计算逆波兰表达式。
在
`evaluateRPN`方法中,我们首先创建一个Stack对象来存储操作数。
然后,对于每个token,我们检查它是操作符还是操作数。
如果是操作符,我们从栈中弹出两个操作数,并使用相应的运算符计算结果并将结果推回栈中。
如果是操作数,我们将其转换为double类型并将其推送到栈中。
最后,返回栈中唯一剩下的元素作为计算结果。
在main方法中,我们提供了两个逆波兰表达式的示例,并打印结果。
运行这段代码会输出以下内容:
```
Result: 9.0
Result: 6.6
```。