前几天我正在练习,我遇到了这个错误,并带了一个开关字符串:
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");
}
}
}
如果有人可以帮助我,那会很酷。我对此比较陌生,所以我不确定这些是否有意义。
答案 0 :(得分:11)
switch (VARIABLE) {
从Java 7开始支持switch
Strings
{{1}}。我猜你使用的是较低版本的java,你需要将你的java版本升级到7(或)从交换机中删除String并使用支持的类型。
答案 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");
}
[...]