用Java切换

时间:2013-01-11 23:17:36

标签: java string variables switch-statement

前几天我正在练习,我遇到了这个错误,并带了一个开关字符串:

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

我不知道如何解决这个问题,所以我来到这里寻求帮助。我正在使用Eclipse。这是源,第二个VARIABLE(在大写字母中)是我得到错误的地方:

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");
    }

}
}

如果有人可以帮助我,那会很酷。我对此比较陌生,所以我不确定这些是否有意义。

3 个答案:

答案 0 :(得分:11)

switch (VARIABLE) {
从Java 7开始支持switch Strings {{1}}。我猜你使用的是较低版本的java,你需要将你的java版本升级到7(或)从交换机中删除String并使用支持的类型。

这是oracle tutorial on switch statement

答案 1 :(得分:3)

除了Nambari的答案之外:当然,你可以使用带有字符串的if-else结构来与字符串一起使用类似开关的逻辑。

答案 2 :(得分: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");
}
[...]