2015-04-01 56 views
0

我正在尝试创建它,以便用户输入关键字并执行该情况。这工作正常,但我希望用户也能够写在关键字后,它仍然会找到正确的情况。例如,用户可能输入“搜索狗和猫”,它会运行“搜索”情况。必须在Java中的switch语句中输入常量吗?

我试图做一个只存储字符串的“SEARCH”部分的临时变量,但我收到一个错误,说它必须是switch语句中的一个常量。有没有解决方法,或者我将不得不使用if语句?

下面是一些测试代码与错误:

switch(textField.getText) 
{ 
    case SEARCH: case textField.getText().split(" ", 2)[0]: // Error is occuring on the second case statement 
    // Statements 
    break; 

    case Default: 
    lblOutput.setText("ERROR: NOT FOUND"); 
} 
+0

@RealSkeptic我认为这是。这是编译时错误(“它必须是switch语句中的常量”)。 – ryanyuyu 2015-04-01 20:51:48

+0

@RealSkeptic更新了原始帖子 – gobigred5 2015-04-01 20:54:38

+1

在编译时解决了个案名称。这就是为什么他们必须是不变的价值。 – Powerlord 2015-04-01 20:54:43

回答

0

你需要指定的case语句三两件事之一:

  1. 恒定
  2. 枚举
  3. 默认关键字

参考到 https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.11

此外,你有一个“案件”内的“案件”,没有中间的“switch”语句。

+1

连续两个'case'标签实际上是非常合法的。只是它们都不是非常量表达式。 – RealSkeptic 2015-04-01 21:07:24

+0

的确如此。我忘了那个。 (即如果你有几个使用相同逻辑的条件)。 我没有以这种方式解释原始帖子,但它是合法的。 – jhenderson2099 2015-04-01 21:14:58