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

时间:2014-09-17 18:52:26

标签: java enums switch-statement runtime-error

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

3 个答案:

答案 0 :(得分:4)

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

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

Enum.valueOf tutorial

  

java.lang.Enum.valueOf()方法返回具有指定名称的指定枚举类型的枚举常量。该名称必须与用于在此类型中声明枚举常量的标识符完全匹配。

答案 1 :(得分:1)

原因是您正在通过String切换并检查ENUM上的案例。因此类型不匹配。

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

答案 2 :(得分:1)

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

在您的情况下,值是一个String,因此每个case语句应该是string类型。目前我不确定SUMMER,FALL等是什么类型。

编辑:

我看到SUMMER,FALL等属于Season类型,因此,首先将currentSeason转换为枚举,然后启用该转换后的值。