2024年4月28日发(作者:)
java 逆波兰表达式
逆波兰表达式(Reverse Polish Notation,简称RPN),也称为
后缀表达式,是一种数学表达式的写法,其中操作符在操作数
的后面。逆波兰表达式的一个重要特点是无需括号来标识操作
符的优先级。
逆波兰表达式的计算规则如下:
1. 从左到右遍历表达式的每个元素。
2. 如果元素是操作数(即数字),将其压入栈中。
3. 如果元素是操作符,则从栈中弹出两个操作数,并进行相应
的计算(根据操作符进行加、减、乘、除等运算),将计算结
果压入栈中。
4. 重复上述步骤,直到遍历完整个表达式。
5. 最后栈中剩下的元素就是表达式的计算结果。
以下是一个简单的java代码实现逆波兰表达式的计算:
```java
import ;
public class RPNCalculator {
public static double calculate(String[] tokens) {
Stack
for (String token : tokens) {
if (isOperator(token)) {
double b = ();
double a = ();
double result = calculateOperation(a, b, token);
(result);
} else {
(ouble(token));
}
}
return ();
}
private static boolean isOperator(String token) {
return ("+") ||
("-") ||
("*") ||
("/");
}
private static double calculateOperation(double a, double b,
String operator) {
switch (operator) {
case "+":
return a + b;
case "-":
return a - b;
case "*":
return a * b;
case "/":
return a / b;
default:
throw new IllegalArgumentException("Invalid operator:
" + operator);
}
}
public static void main(String[] args) {
String[] tokens = { "2", "1", "+", "3", "*" };
double result = calculate(tokens);
n("Result: " + result); // Output: 9.0
}
}
```
在上面的代码中,我们使用了一个栈来存储操作数,遍历给定
的逆波兰表达式,如果遇到操作数,将其入栈,如果遇到操作
符,从栈中弹出两个操作数,并进行对应的计算,将结果压入
栈中。最后,栈中剩下的元素就是表达式的计算结果。在上面
的示例代码中,给定的逆波兰表达式是{ "2", "1", "+", "3",
"*" },计算结果为9.0。
发布评论