我是一名Java自学者,并坚持这个问题。尝试了不合理数量的组合和可能的解决方案,但遇到了更多的错误。
public class SeasonsSwitch {
enum Season {
WINTER,
SPRING,
SUMMER,
FALL
}
public static void main(String[] args){
String currentSeason;
currentSeason = TextIO.getWord();
switch (currentSeason){
case WINTER:
TextIO.put("Decemeber, January, February");
break;
case SPRING:
TextIO.put("March, April, May");
break;
case SUMMER:
TextIO.put("June, July, August");
break;
case FALL:
TextIO.put("September, October, November");
}
}
}
error. cannot find symbol
case WINTER
error. cannot find symbol
case SPRING
error. cannot find symbol
case SUMMER
error. cannot find symbol
case FALL
答案 0 :(得分:4)
使用Season.valueOf
将枚举常量的字符串表示形式转换为枚举常量。
Season s = Season.valueOf(currentSeason);
switch (s){
java.lang.Enum.valueOf()方法返回具有指定名称的指定枚举类型的枚举常量。该名称必须与用于在此类型中声明枚举常量的标识符完全匹配。
答案 1 :(得分:1)
原因是您正在通过String
切换并检查ENUM
上的案例。因此类型不匹配。
请确保两者必须是相同或可转换的类型。
答案 2 :(得分:1)
您必须匹配每个case语句中switch语句中提供的相同类型。
在您的情况下,值是一个String,因此每个case语句应该是string类型。目前我不确定SUMMER,FALL等是什么类型。
编辑:
我看到SUMMER,FALL等属于Season
类型,因此,首先将currentSeason
转换为枚举,然后启用该转换后的值。