Switch语句会报不兼容的类型错误。

8 浏览
0 Comments

Switch语句会报不兼容的类型错误。

我正在尝试编译,但出现了以下错误:

enigma/Rotor.java:30: 不兼容的类型,找到:java.lang.String,需要:int     switch(name){
1 error

为什么会出现这个错误?我该如何修复它?它在这个包中,我似乎无法弄清楚。以下是代码:

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

0
0 Comments

Switch语句在Java7及以上版本中才支持使用String作为参数。根据给出的信息,推测你使用的编译器版本低于Java7。解决方法如下:

1. 升级到Java7或更高版本

2. 将switch语句改为if/else语句

3. 在switch语句中使用int类型参数而不是String类型参数

首先,你需要将Java升级到Java7版本。如果问题仍然存在,可能是因为你的IDE设置的问题。对于IntelliJ,你可以按照以下步骤进行设置:点击"File" -> "Project Structure" -> "Project" -> "Project Language Level",将语言级别设置为7或更高版本。

0
0 Comments

Switch语句在Java 7中接受字符串作为参数。在Java 7之前,只能传递与int兼容的类型(short、byte、int、char)。如果尝试在Java 7之前的版本中将字符串作为switch语句的参数,将会出现"Incompatible Types"错误。

解决这个问题的方法是将字符串转换为与int兼容的类型,然后将其作为switch语句的参数传递。可以使用以下代码示例来解决这个问题:

String input = "someString";
int value = Integer.parseInt(input); // 将字符串转换为整数
switch (value) {
    case 1:
        // 执行某些操作
        break;
    case 2:
        // 执行某些操作
        break;
    default:
        // 执行默认操作
        break;
}

在上面的示例中,首先将字符串`input`转换为整数`value`,然后将其作为switch语句的参数。根据`value`的值,可以执行相应的操作。

通过这种方式,可以解决Switch Statement gives Incompatible Types error的问题。在Java 7之前,只能使用与int兼容的类型作为switch语句的参数,而在Java 7及更高版本中,则可以接受字符串作为参数。

0
0 Comments

问题的原因是使用了不兼容的类型,解决方法是在pom.xml文件中添加Maven编译插件的配置,指定源代码和目标版本为1.8。具体的解决方法如下:

首先,在pom.xml文件中找到标签,如果没有则添加一个。

然后,在标签内添加以下代码:

<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>

最后,保存并关闭pom.xml文件,重新编译项目即可解决问题。

0