字符串作为switch语句

时间:2011-12-18 22:39:18

标签: java string switch-statement

  

可能重复:
  Switch Statement with Strings in Java

我试图在String上使用switch语句,但它给出了编译错误。如果任何人建议我如何在switch-case语句中使用String,它对我有帮助。

5 个答案:

答案 0 :(得分:5)

如果你真的想要使用switch语句,有一种方法。 创建一个包含switch语句

的枚举类
public enum MustUseSwitch{
    value1,
    value2,
    value3;
}

然后使用枚举切换到语句。

switch(MustUseSwitch.valueOf(stringVariable)){
    case value1:
        System.out.println("Value1!");
        break;
    case value2:
        System.out.println("Value2!");
        break;
    case value3:
        System.out.println("Value3!");
       break;
}

答案 1 :(得分:4)

如前所述,你不能。有关技术细节,请参阅有关compiling switches的规范。使用Java SE 7,已实现此功能。有关使用带{JDK 7的String开关的示例,请参阅this page

也许this question也可以提供帮助。

答案 2 :(得分:3)

你做不到。如果/ else,则使用if / else if / else。除非您使用的是Java7。关于这个重复问题的答案可以比我更好地解释它:https://stackoverflow.com/a/338230/3333

答案 3 :(得分:2)

你不能直接使用字符串,但你可以创建一个关键字符串数组,快速搜索它,然后打开索引,如下所示:

String[] sortedKeys = new String[] {"alpha", "bravo", "delta", "zebra"};
int keyIndex = Arrays.binarySearch(sortedKeys, switchKey);
switch(keyIndex) {
    case 0: // alpha
        break;
    case 1: // bravo
        break;
    case 2: // delta
        break;
    case 3: // zebra
        break;
}

答案 4 :(得分:0)

您无法在String语句中使用switch,但可以使用Enum类型。使用Enum比使用String甚至public static final int MY_CONSTANT要好得多。

你会在这里找到一个非常好的教程:Java Enum type tutorial