我正在尝试编写一个简单的switch语句

时间:2014-09-01 01:03:54

标签: java

我知道这不会编译并在此时运行。切换声明是对的吗?我确实得到了编译器错误:class,interface或enum expected

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");
    }
  }
}

3 个答案:

答案 0 :(得分:5)

您收到错误是因为您必须尝试将switchString一起使用且Java版本低于7. String在Java中引入switch语句的支持因此,您需要使用相同版本或更高版本来编译代码。

按照此技术说明了解有关使用String的切换的更多信息:

http://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html

答案 1 :(得分:0)

交换机语句中的字符串

在JDK 7发行版中,您可以在String语句的表达式中使用switch对象。

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

答案 2 :(得分:0)

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

  1. 字母表有数字表示。也就是说,CHARACTERS有固定的数字代码 - http://www.kerryr.net/pioneers/ascii2.htm

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

  3. 在旧式开关中使用int代码而不是String选项。

    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");
        }
      }
    }