java逆波兰表达式
时间: 2024-12-04 15:12:42 浏览: 26
逆波兰表达式(Reverse Polish Notation,RPN),也称为后缀表达式,是一种数学表达式的表示方法。在这种表示法中,运算符位于其操作数之后。逆波兰表达式不需要括号来表示运算的优先级,因为运算顺序是固定的。
在Java中,处理逆波兰表达式通常使用栈(Stack)数据结构。以下是一个简单的Java程序示例,用于计算逆波兰表达式的值:
```java
import java.util.Stack;
public class ReversePolishNotation {
public static int evaluate(String[] tokens) {
Stack<Integer> stack = new Stack<>();
for (String token : tokens) {
if (isOperator(token)) {
int operand2 = stack.pop();
int operand1 = stack.pop();
int result = applyOperator(token, operand1, operand2);
stack.push(result);
} else {
stack.push(Integer.parseInt(token));
}
}
return stack.pop();
}
private static boolean isOperator(String token) {
return token.equals("+") || token.equals("-") || token.equals("*") || token.equals("/");
}
private static int applyOperator(String operator, int operand1, int operand2) {
switch (operator) {
case "+":
return operand1 + operand2;
case "-":
return operand1 - operand2;
case "*":
return operand1 * operand2;
case "/":
return operand1 / operand2;
default:
throw new IllegalArgumentException("Invalid operator: " + operator);
}
}
public static void main(String[] args) {
String[] tokens = {"2", "1", "+", "3", "*"};
int result = evaluate(tokens);
System.out.println("The result is: " + result);
阅读全文