gpt4 book ai didi

java - 检查运算符更高优先级的方法,是否有更聪明的方法来做到这一点?

转载 作者:行者123 更新时间:2023-12-01 08:08:03 24 4
gpt4 key购买 nike

这是我编写的用于检查哪个运算符具有最高优先级的方法,现在我的问题是:还有其他方法可以做到这一点吗?我一直在测试这个,它工作得很好,但我很确定应该还有改进的空间。你觉得怎么样?

static boolean hasHigherPrecendence(char top, char current){

String t = String.valueOf(top);
String c = String.valueOf(current);

System.out.println(t);
System.out.println(c);

switch (t) {
case "-":
if ( c.equals("-") || c.equals("+") )
return false;
break;
case "+":
if ( c.equals("-") || c.equals("+") )
return false;
break;
case "/":
if ( !c.equals("*") || !c.equals(t) || !c.equals("%") )
return false;
break;
case "*":
if ( !c.equals("%") || !c.equals(t) || !c.equals("/"))
return false;
break;
case "%":
if (c.equals(t) || c.equals("*") || c.equals("/"))
return false;
break;
default:
throw new IllegalArgumentException("Operator unknown: " + t);
}

return true;
}

最佳答案

如果是我,我会对函数中的运算符进行排名(注意,我选择的值不一定是您应该使用的值......):

private static final int rankOperator(char op) {
switch (op) {
case '-' : return 0;
case '+' : return 0;
case '/' : return 2;
case '*' : return 2;
case '%' : return 4;
}
throw new IllegalStateException("Unknown operator " + op);
}


public boolean hasHigherPrecedence(char top, char current) {
return rankOperator(top) > rankOperator(current);
}

关于java - 检查运算符更高优先级的方法,是否有更聪明的方法来做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19840582/

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