【发布时间】:2018-09-13 19:30:09
【问题描述】:
实现一个中缀到后缀计算器,需要检查一个运算符的优先级是否低于另一个。到目前为止,这是我所拥有的:
public enum Operators {
ADD('+', 2), SUBTRACT('-', 2), MULTIPLY('*', 4), DIVIDE('/', 4);
private char operator;
private int precedence;
Operators(char operator, int precedence) {
this.operator = operator;
this.precedence = precedence;
}
public char getOperator() {
return operator;
}
public int getPrecedence() {
return precedence;
}
}
private static boolean isOperator(char c) {
return c == Operators.ADD.getOperator() || c == Operators.SUBTRACT.getOperator()
|| c == Operators.MULTIPLY.getOperator() || c == Operators.DIVIDE.getOperator();
}
private static boolean isLowerPrecedence(char ch1, char ch2) {
// STUCK HERE
}
我尝试了许多不同的方法来检查传入的字符的优先级,但无济于事。有没有一种简单的方法来比较枚举的两个值?我必须创建一个循环吗?
【问题讨论】:
-
顺便说一句:为什么
isOperator、isLowerPrecedence方法声明为private?从问题中的代码开始,它们未使用。 -
@LuCio 它们在我的算法中用于将中缀转换为我尚未发布的后缀,这有助于发布很多吗?
-
我只是好奇它们是否被使用过。现在我知道了。