在 Java case 语句中使用变量
Using a variable in a Java case statment
我正在为计算器制作一个表达式解析器。表达式将包含一个变量,例如,用户可以输入 "x + 2" 或 "y^2"。我有一个switch语句,switch语句中的一个case在检测到一个变量时执行了某个动作:
case variableSymbol:
if (expression.length() == 1)
{
rangeResult = x1;
break outer;
}
varFlag = true;
varPos = expresPos;
break;
最初,我在上面的例子中硬编码了一个值'x',但我想让用户选择他们使用哪个变量,所以在parse函数中添加了一个char参数,并命名为它是变量符号。
这是函数的参数:
public static ArrayList<Double> parseRange(String expression, char variableSymbol, double x1, double x2, double step)
但是 Java 不允许变量作为 switch 语句中的 case。有没有办法解决?避免重写 switch 语句的解决方案是最好的,因为它有几百行 long.Thank 你的帮助。
不,那是不可能的,对于 switch
的情况没有意义; if-else
可以实现你想要的。原因是switch一般是用查表实现的,比if-else
效率更高;但为了实现这一点,需要在编译时设置分支。
我正在为计算器制作一个表达式解析器。表达式将包含一个变量,例如,用户可以输入 "x + 2" 或 "y^2"。我有一个switch语句,switch语句中的一个case在检测到一个变量时执行了某个动作:
case variableSymbol:
if (expression.length() == 1)
{
rangeResult = x1;
break outer;
}
varFlag = true;
varPos = expresPos;
break;
最初,我在上面的例子中硬编码了一个值'x',但我想让用户选择他们使用哪个变量,所以在parse函数中添加了一个char参数,并命名为它是变量符号。 这是函数的参数:
public static ArrayList<Double> parseRange(String expression, char variableSymbol, double x1, double x2, double step)
但是 Java 不允许变量作为 switch 语句中的 case。有没有办法解决?避免重写 switch 语句的解决方案是最好的,因为它有几百行 long.Thank 你的帮助。
不,那是不可能的,对于 switch
的情况没有意义; if-else
可以实现你想要的。原因是switch一般是用查表实现的,比if-else
效率更高;但为了实现这一点,需要在编译时设置分支。