3

我在这段代码中有一个错误

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 helios 编写相同的代码时,它会说:

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

帮我解决这个问题。

4

7 回答 7

11

您正在使用JDK <1.7. Switchon Strings 在 JDK 下不起作用。

所以转移到 1.7 或者不要在Switch case.

可能是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;
            }
于 2013-10-18T12:35:31.350 回答
1

您可能使用的是小于 1.7 的 jdk,请通过以下方式检查您的 java 版本

  • 右键单击您的项目
  • 单击配置构建路径,然后转到库并检查
    您的 Eclipse 使用哪个 jdk。

如果小于 1.7 则给出 1.7 的路径

于 2013-10-18T12:38:43.997 回答
1

Switch statements with String cases have been implemented in Java SE 7. SO check your JDK in eclipse.

于 2013-10-18T12:36:41.357 回答
0

Just change String to char.

case "a":

to

case 'a':

Strings are not accepted in switch before Java 7, but chars are.

于 2013-10-18T12:36:30.717 回答
0

更改您的stringtochar""to''

char c = grade.charAt(0);

switch(c)
{
.
.
}
于 2013-10-18T12:42:30.930 回答
0

对于字符串情况,您可以使用,例如:

String choice;
switch(choice)
{
case "1": 
  break;
case "2":
  break;
default: break;
}
于 2016-07-24T18:32:21.590 回答
0

" "在 Eclipse Mars 中,我根本没有使用int类型。

int grade;
switch(grade)
{
 case 1:
 break;
 case 2:
 break;
 default:
 break;
}

希望它对其他人有用

于 2016-07-20T19:11:18.993 回答