我在此代码中出错
System.out.println("enter grade ");
Scanner input2 = new Scanner(System.in);
String grade = input2.nextLine();
switch(grade)
{
case "a":
g=10;
break;
case "b":
g=8;
break;
default:
System.out.println("invalid grade");
break;
}
我正在使用eclipse kepler。它给了我正确的输出。
但是当用eclipse helios编写相同的代码时,它就像是:
Cannot switch on a value of type String. Only convertible int values or enum constants are permitted
帮我解决这个问题。
答案 0 :(得分:11)
您正在使用JDK <1.7
。字符串上的Switch
不能在JDK下面工作。
所以转移到1.7或者不要在Switch case
中使用String。
可能是适合您的char
类型,因为您在character
中使用了String
个符号来满足您的需求。
以这种方式看。然后它变成
//logic to get grade char and then
switch (grade) {
case 'a':
g = 10;
break;
case 'b':
g = 8;
break;
default:
System.out.println("invalid grade");
break;
}
答案 1 :(得分:1)
带有String案例的switch语句已在Java SE 7中实现。 所以在日食中检查你的JDK。
答案 2 :(得分:1)
您可能正在使用小于1.7的jdk,请按以下方式检查您的java版本
如果小于1.7,则给出1.7
的路径答案 3 :(得分:0)
只需将String更改为char即可。
case "a":
到
case 'a':
在Java 7之前的交换机中不接受字符串,但字符是。
答案 4 :(得分:0)
将您的string
更改为char
,将""
更改为''
char c = grade.charAt(0);
switch(c)
{
.
.
}
答案 5 :(得分:0)
在Eclipse Mars中,我根本没有" "
类型使用int
。
int grade;
switch(grade)
{
case 1:
break;
case 2:
break;
default:
break;
}
希望它适用于其他人
答案 6 :(得分:0)
对于字符串案例,您可以使用,例如:
String choice;
switch(choice)
{
case "1":
break;
case "2":
break;
default: break;
}