java中的switch语句接受哪些数据类型

时间:2013-10-18 12:34:30

标签: java eclipse switch-statement type-conversion

我在此代码中出错

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

帮我解决这个问题。

7 个答案:

答案 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版本

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

如果小于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;
}