gpt4 book ai didi

java - 比较枚举值

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:11 24 4
gpt4 key购买 nike

实现后缀计算器的中缀,需要检查运算符的优先级是否低于另一个运算符。这是我到目前为止所拥有的:

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
}

我尝试了很多不同的方法来检查传入的字符的优先级,但都无济于事。有没有一种简单的方法来比较枚举的两个值?我必须创建一个循环吗?

最佳答案

如果您有一种将“运算符”char 转换为枚举值的方法,则比较起来很容易。

例如:

static Operators getOperatorForChar(char op) {
for(Operators val: values())
if(op == val.operator)
return val; //return enum type

return null;
}

然后您可以使用以下方法实现您的方法:

private static boolean isLowerPrecedence(char ch1, char ch2) {

//assuming intention is to compare precedence of ch1 to that of ch2
return getOperatorForChar(ch1).precedence < getOperatorForChar(ch2).precedence;
}

关于java - 比较枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52320567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com