某语言中允许关系算符连用,即存在形如"3<4>2"的关系运算表达式,在Java中应写成“3<4&&4>2”才是合法的表达式。 现要在Java中对输入的连用关系算符的表达式进行计算,如何实现呢?
时间: 2023-06-25 16:04:52 浏览: 32
可以使用Java中的逆波兰表达式来实现对连用关系算符的表达式进行计算。
1. 首先将表达式转换成逆波兰表达式,即将操作数放在前面,将操作符放在后面。
例如,将“3<4>2”转换成逆波兰表达式为“3 4 < 2 >”。
2. 然后使用栈来计算逆波兰表达式的值。遇到操作数时,将其压入栈中;遇到操作符时,从栈中弹出两个操作数,进行相应的运算,并将结果压入栈中。
例如,对于逆波兰表达式“3 4 < 2 >”,我们首先将“3”和“4”压入栈中。当遇到“<”运算符时,从栈中弹出两个操作数“4”和“3”,进行比较得到“true”,将结果“true”压入栈中。接着遇到“>”运算符时,从栈中弹出两个操作数“true”和“2”,进行比较得到“false”,将结果“false”压入栈中。最后栈中只剩下一个元素“false”,即为表达式的结果。
下面是一个实现连用关系算符表达式计算的Java代码示例:
```java
import java.util.*;
public class ExpressionCalculator {
public static boolean calculate(String expression) {
Stack<Boolean> stack = new Stack<>();
for (String token : expression.split(" ")) {
if (token.equals("<")) {
boolean op2 = stack.pop();
boolean op1 = stack.pop();
stack.push(op1 && !op2);
} else if (token.equals(">")) {
boolean op2 = stack.pop();
boolean op1 = stack.pop();
stack.push(!op1 && op2);
} else {
stack.push(Boolean.valueOf(token));
}
}
return stack.pop();
}
public static void main(String[] args) {
String expression = "3 < 4 > 2";
boolean result = calculate(expression);
System.out.println(expression + " = " + result);
}
}
```
输出结果为:
```
3 < 4 > 2 = false
```
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)