提示枚举 switch case 标签必须为枚举常量的非限定名称 求破解


package e9_19;

import java.time.LocalDate;

public class GiveCalendar {
    public LocalDate[] getCalendar(LocalDate date) {
        date = date.withDayOfMonth(1);                      //确保 date 日期的 day 是 1 ,即 day 的值是1
        int days = date.lengthOfMonth();                    //得到该月有几天
        LocalDate[] dateArrays = new LocalDate[days];
        for (int i = 0;i<days;i++){
            dateArrays[i] = date.plusDays(i);
        }
        return  dateArrays;
    }
}
package e9_19;

import java.time.*;

public class Ea {
    public static void main(String[]args){
        LocalDate date = LocalDate.now();                                   //本地时间
        GiveCalendar giveCalendar = new GiveCalendar();                  //设置新的局部变量
        LocalDate [] dateArrays = giveCalendar.getCalendar(date);
        printNameHead(date);                                                //输出日历的头
        for (int i = 0;i< dateArrays.length;i++){
            if (i == 0){
                printSpace(dateArrays[i].getDayOfWeek());                   //根据 1 号是星期几,输出样式空格
                System.out.printf("%4d",dateArrays[i].getDayOfMonth());
            }
            else {
                System.out.printf("%4d",dateArrays[i].getDayOfMonth());
            }
            if (dateArrays[i].getDayOfWeek() == DayOfWeek.SATURDAY)         //星期六为星期最后一天
                System.out.println();                                       //日历样式中的星期回行
        }
    }
     public static void printSpace(DayOfWeek x){                         //输出空格
        switch(x){
            case Sunday:printSpace(0);
            break;
            case Monday:printSpace(1);
            break;
            case Tuesday:printSpace(2);
            break;
            case Wednesday:printSpace(3);
            break;
            case Thursday:printSpace(4);
            break;
            case Friday:printSpace(5);
            break;
            case Saturday:printSpace(6);
            break;
        }
    }
    public static void printSpace(int n){
        for (int i = 0;i<n;i++)
            System.out.printf("%4s","");                                //输出 4 个空格
    }
    public static void printNameHead(LocalDate date){               //输出日历的头
        System.out.println(date.getYear() + "年" + date.getMonthValue() + "月 日历");
        String[] name = {"日", "一", "二", "三", "四", "五", "六"};
        for (int i = 0; i < name.length;i++)
            System.out.printf("%3s", name[i]);
        System.out.println();
    }
}

错误信息如图

img

img

``
“枚举 switch case 标签必须为枚举常量的非限定名称”这句话我知道什么意思,但实力有限,且这门课大多是自学的,自己也改了很多次都没解决。
没学过C语言直接学java的,在帮我解决这个问题的同时能教我分析这个代码吗。谢谢了。

case 后面的变量加上类名DayOfWeek.,变成DayOfWeek.SundayDayOfWeek.Monday等等。
因为你的这些SundayMonday都是在DayOfWeek类里定义的。