java - 在 Java case 语句中使用变量

标签 java switch-statement compile-time-constant

我正在为计算器制作一个表达式解析器。表达式将包含一个变量,例如,用户可以输入“x + 2”或“y^2”。我有一个 switch 语句,switch 语句中的一种情况在检测到变量时执行特定操作:

case variableSymbol:
                    if (expression.length() == 1) 
                    {
                        rangeResult = x1;
                        break outer;
                    }
                    varFlag = true;
                    varPos = expresPos;
                    break;

最初,我在上面的例子中硬编码了一个值“x”,但我想让用户选择他们使用哪个变量,所以在解析函数中添加了一个 char 参数,并将其命名为 variableSymbol。 这是函数的参数:

public static ArrayList<Double> parseRange(String expression, char variableSymbol, double x1, double x2, double step)

但是 Java 不允许变量作为 switch 语句中的 case。有没有办法解决?避免重写 switch 语句的解决方案是最好的,因为它长达数百行。感谢您的帮助。

最佳答案

不,这是不可能的,对于 switch 情况也没有意义;你想要的可以用if-else来实现。原因是因为 switch 通常是用查找表实现的,比 if-else 更高效;但为了实现这一点,需要在编译时设置分支。

关于java - 在 Java case 语句中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29216034/

相关文章:

我可以在编译时用 c 计算 pow(10,x) 吗?

c++ - 结构减去填充的编译时大小

java - 如何使 BufferedWriter 在文本文件中最底部定义的行上写入?

python - Python 中 STRINGS 的 switch-case 语句

java - 将 submat 从 RGB 转换为 GRAY OpenCV

使用 switch 语句将数字(最多 4 位)转换为单词(C 程序)

ios - Swift 中的 switch 语句

java - 代码中的字符串常量/文字是否会大大减慢编译速度?

java - 函数调用的正则表达式模式

java - 在 Web 应用程序中显示 .eml 文件