Java I';我正在写一个简单的switch语句

Java I';我正在写一个简单的switch语句,java,Java,我知道这不会在此时编译和运行。然而,switch语句是否正确?我确实得到一个编译器错误:应为类、接口或枚举 public class Fruit { public static void main(String[] args) { String choice = " "; switch(choice) { case " A ": System.out.print(" Apple"); break; case " K ": Syste

我知道这不会在此时编译和运行。然而,switch语句是否正确?我确实得到一个编译器错误:应为类、接口或枚举

public class Fruit
{

  public static void main(String[] args)
  {

String choice = " ";

    switch(choice)
    {
    case " A ":  System.out.print(" Apple");
      break;

    case  " K ": System.out.println("Kiwi");
      break;

    case " P ": System.out.println("Pear");
      break;

    default: System.out.println("incorrect choice");
    }
  }
}

出现错误是因为您必须在Java版本低于7的情况下尝试将
开关
字符串
一起使用<代码>字符串
开关
语句的支持是在Java7中引入的,因此您需要使用相同版本或更高版本来编译代码

按照此技术说明了解有关带字符串开关的更多信息:


您收到错误,因为您必须尝试在Java版本低于7的情况下使用
开关
字符串
<代码>字符串
开关
语句的支持是在Java7中引入的,因此您需要使用相同版本或更高版本来编译代码

按照此技术说明了解有关带字符串开关的更多信息:


开关语句中的字符串

在JDK 7版本中,可以在
开关
语句的表达式中使用
字符串
对象


switch
语句将其表达式中的字符串对象与每个大小写标签关联的表达式进行比较,就好像它正在使用
String.equals
方法一样;因此,switch语句中字符串对象的比较区分大小写。Java编译器通常从使用
String
对象的
switch
语句生成比从链接的
if-then-else
语句生成更高效的字节码。

switch语句中的字符串

在JDK 7版本中,可以在
开关
语句的表达式中使用
字符串
对象


switch
语句将其表达式中的字符串对象与每个大小写标签关联的表达式进行比较,就好像它正在使用
String.equals
方法一样;因此,switch语句中字符串对象的比较区分大小写。Java编译器通常从使用
String
对象的
switch
语句生成比从链式
if-then-else
语句生成更高效的字节码。

如前所述,您只能在Java 7或更高版本中使用字符串作为case语句的表达式。如果您只能使用较低版本,那么下面是代码的解决方法

  • 字母表有数字表示法。也就是说,字符具有固定的数字代码-

  • 您将获得一个字符串,获取字符串中的第一个字符,然后将该字符转换为其int代码

  • 在老式的开关中使用int代码而不是字符串选择

    public class Fruit {
    
    public static void main(String[] args) {
    
        String choice = "";
        int code = -1;
    
        choice = "K";
        code = (int) choice.charAt(0);
    
        switch (code) {
        case 65://A
            System.out.print("Apple");
            break;
    
        case 75://K
            System.out.println("Kiwi");
            break;
    
        case 80://P
            System.out.println("Pear");
            break;
    
        default:
            System.out.println("incorrect choice");
        }
      }
    }
    

  • 如前所述,只能在Java7或更高版本中使用字符串作为case语句的表达式。如果您只能使用较低版本,那么下面是代码的解决方法

  • 字母表有数字表示法。也就是说,字符具有固定的数字代码-

  • 您将获得一个字符串,获取字符串中的第一个字符,然后将该字符转换为其int代码

  • 在老式的开关中使用int代码而不是字符串选择

    public class Fruit {
    
    public static void main(String[] args) {
    
        String choice = "";
        int code = -1;
    
        choice = "K";
        code = (int) choice.charAt(0);
    
        switch (code) {
        case 65://A
            System.out.print("Apple");
            break;
    
        case 75://K
            System.out.println("Kiwi");
            break;
    
        case 80://P
            System.out.println("Pear");
            break;
    
        default:
            System.out.println("incorrect choice");
        }
      }
    }
    

  • 显然,这里有一个关于代码语法是否正确的大讨论。您可能需要检查您正在使用的Java版本;尝试更新Java开发工具包。我的版本是JDK 7.0您不能切换字符串显然这里有一个关于您的代码语法是否正确的大讨论。您可能需要检查您正在使用的Java版本;试着更新Java开发工具包。我的版本是JDK 7.0根据我的经验,几乎不需要打开字符串。重新思考为什么要尝试切换一个字符串,并考虑使用EnUM之类的东西可能是明智的。我同意。不要打开字符串。在这种情况下,您似乎应该打开一个字符,这一直是允许的。根据我的经验,需要打开一个字符串是非常罕见的。重新思考为什么要尝试切换一个字符串,并考虑使用EnUM之类的东西可能是明智的。我同意。不要打开字符串。在这种情况下,看起来您应该打开一个字符,这一直是允许的。