【问题标题】:Switch statement in java accept which datatypesjava中的switch语句接受哪些数据类型
【发布时间】:2013-10-27 07:20:18
【问题描述】:

这段代码有错误

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 开普勒。它给了我正确的输出。

但在 eclipse helios 中编写相同的代码时,它会说:

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

帮我解决这个问题。

【问题讨论】:

    标签: java eclipse switch-statement type-conversion


    【解决方案1】:

    您正在使用JDK <1.7。字符串上的Switch 在 JDK 下无法使用。

    所以切换到 1.7 或不要在 Switch case 中使用字符串。

    可能是适合您的char 类型,因为您在String 中使用单个character 来满足您的需要。

    这样看。然后就转了

    //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;
                }
    

    【讨论】:

      【解决方案2】:

      在 Java SE 7 中实现了带有字符串情况的 Switch 语句。 所以在eclipse中检查你的JDK。

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

          只需将 String 更改为 char。

          case "a":
          

          case 'a':
          

          在 Java 7 之前的 switch 中不接受字符串,但字符是。

          【讨论】:

            【解决方案5】:

            将您的string 更改为char,并将"" 更改为''

            char c = grade.charAt(0);
            
            switch(c)
            {
            .
            .
            }
            

            【讨论】:

              【解决方案6】:

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

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

              希望它对其他人有用

              【讨论】:

                【解决方案7】:

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

                String choice;
                switch(choice)
                {
                case "1": 
                  break;
                case "2":
                  break;
                default: break;
                }
                

                【讨论】:

                • 虽然不禁止仅使用代码的答案,但请理解这是一个问答社区,而不是众包社区,并且通常,如果 OP 理解作为答案发布的代码,他/她会自己想出一个类似的解决方案,并且不会一开始就发布问题。因此,请通过解释如何和/或为什么起作用,为您的答案和/或代码提供上下文。
                猜你喜欢
                • 2019-06-07
                • 2018-04-04
                • 2011-02-28
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2022-08-17
                • 1970-01-01
                • 2012-05-26
                相关资源
                最近更新 更多