枚举和切换帮助。Java学习者

枚举和切换帮助。Java学习者,java,enums,switch-statement,runtime-error,Java,Enums,Switch Statement,Runtime Error,我是一个Java自学者,在这个问题上陷入了困境。尝试了不合理数量的组合和可能的解决方案,但遇到了更多的错误 public class SeasonsSwitch { enum Season { WINTER, SPRING, SUMMER, FALL } public static void main(String[] args){ String c

我是一个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

原因是您正在传递一个
字符串
,以切换并检查
枚举
上的大小写。因此,类型不匹配


请确保这两种类型必须相同或可转换。

原因是您正在传递一个
字符串来切换并检查
枚举上的大小写。因此,类型不匹配


请确保两者必须是相同或可转换的类型。

使用
seasure.valueOf
将枚举常量的字符串表示形式转换为枚举常量

Season s = Season.valueOf(currentSeason);
switch (s){

方法返回具有指定名称的指定enumtype的枚举常量。名称必须与用于在此类型中声明枚举常量的标识符完全匹配


使用
seasure.valueOf
将枚举常量的字符串表示形式转换为枚举常量

Season s = Season.valueOf(currentSeason);
switch (s){

方法返回具有指定名称的指定enumtype的枚举常量。名称必须与用于在此类型中声明枚举常量的标识符完全匹配


您必须在每个case语句中匹配switch语句中提供的相同类型

在您的案例中,值是一个字符串,因此每个case语句都应该是String类型。目前我不确定夏天、秋天等是什么类型

编辑:


我发现夏季、秋季等属于
seasure
类型,因此,首先将
currentSeason
转换为枚举,然后打开转换后的值。

您必须在每个case语句中匹配switch语句中提供的相同类型

在您的案例中,值是一个字符串,因此每个case语句都应该是String类型。目前我不确定夏天、秋天等是什么类型

编辑:


我发现夏季、秋季等属于
季节
,因此,首先将
当前季节
转换为枚举,然后打开转换后的值。

您必须对提供给
开关及其
案例
语句的值使用相同的类型。您必须对提供给
开关及其
案例
语句的值使用相同的类型。请注意,如果使用了无效的季节,引发异常。请注意,如果使用了无效的季节,则会引发异常。