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 stack = new 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。