Switch语句给出了不兼容类型错误

use*_*362 9 java switch-statement

我正在尝试编译,我收到此错误:

enigma/Rotor.java:30: incompatible types found : java.lang.String required: int     switch(name){
1 error
Run Code Online (Sandbox Code Playgroud)

为什么我收到此错误?我如何解决它?它在包中,我似乎无法弄明白.这是代码:

String label;

Rotor(){;}

Rotor(String name){
  switch(name){
    case "B":
      conversion_chart = B;
      break;
    case "C":
      conversion_chart = C;
      break;
    case "I":
      conversion_chart=I;
      notch = NOTCH[0];
      break;
    case "II":
      conversion_chart=II;
      notch = NOTCH[1];
      break;
    case "III":
      conversion_chart=III;
      notch = NOTCH[2];
      break;
    case "IV":
      conversion_chart=IV;
      notch = NOTCH[3];
      break;
    case "V":
      conversion_chart=V;
      notch = NOTCH[4];
      break;
    case "VI":
      conversion_chart=VI;
      notch = NOTCH[5];
      break;
    case "VII":
      notch = NOTCH[6];
      conversion_chart=VII;
      break;
    case "VIII":
      notch = NOTCH[7];
      conversion_chart=VIII;
      break;
  }
  label = name;
  position = 0;
}
Run Code Online (Sandbox Code Playgroud)

kos*_*osa 10

switch(name)
Run Code Online (Sandbox Code Playgroud)

switch 只有Java7以后才支持带有String的语句.

我猜你使用的编译器版本比Java7少

选项:

1) You need to either upgrade to Java7 
2) Change switch statement to `if/else`
3) Use `int` in switch instead of `String`
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您使用的是 maven 项目,那么您只需将以下代码添加到 ypur pom.xml 并解决您的问题:

 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
Run Code Online (Sandbox Code Playgroud)