Switch语句会报不兼容的类型错误。
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; }
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或更高版本。
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及更高版本中,则可以接受字符串作为参数。
问题的原因是使用了不兼容的类型,解决方法是在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文件,重新编译项目即可解决问题。