1

前几天我在练习,我遇到了这个错误,带有一个用于切换的字符串:

Cannot switch on a value of type String. Only int values or enum constants are permitted

我不确定如何解决这个问题,所以我来这里寻求帮助。我正在使用 Eclipse。这是源代码,第二个变量(大写)是我得到错误的地方:

public class Switch {
public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.println("Please enter a command: ");
    String VARIABLE = input.nextLine();

    switch (VARIABLE) {
    case "start":
        System.out.println("Machine started!");
        break;

    case "stop":
        System.out.println("Machine stopped!");
        break;

    default:
        System.out.println("Invalid command");
    }

}
}

如果有人可以帮助我,那就太好了。我对此比较陌生,所以我不确定这是否有意义。

4

3 回答 3

11
switch (VARIABLE) {

switchStrings从 Java 7 开始支持with 。我猜您使用的是较低版本的 java,您需要将您的 java 版本升级到 7(或)从 switch 中删除 String 并使用支持的类型。

这是关于 switch 语句的 oracle 教程

于 2013-01-11T23:18:20.073 回答
3

除了 Nambari 的回答:当然,您可以将 if-else 构造与字符串一起使用,以使字符串具有类似开关的逻辑。

于 2013-01-11T23:22:32.250 回答
2

您的代码是正确的,但是在 java7 (jdk1.7) 中引入了对 switch-case 构造的 String 支持,因此您的错误意味着您的 java 版本较旧,您必须对其进行升级。如果您不想升级 Java,则需要使用多个 if-else 构造:

[...]
if(VARIABLE.equals("start")){
    System.out.println("Machine started!");
} else if(VARIABLE.equals("stop")){
    System.out.println("Machine stopped!");
} else {
    System.out.println("Invalid command");
}
[...]
于 2013-01-11T23:45:03.240 回答