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();
}
}
错误信息如图
``
“枚举 switch case 标签必须为枚举常量的非限定名称”这句话我知道什么意思,但实力有限,且这门课大多是自学的,自己也改了很多次都没解决。
没学过C语言直接学java的,在帮我解决这个问题的同时能教我分析这个代码吗。谢谢了。
case 后面的变量加上类名DayOfWeek.
,变成DayOfWeek.Sunday
、DayOfWeek.Monday
等等。
因为你的这些Sunday
、Monday
都是在DayOfWeek
类里定义的。