在代码基础上改进一下,讲该月的每天为星期几以日历的形式表示,并讲该年每月有多少天都表示出来
时间: 2024-12-18 09:36:07 浏览: 3
基于之前的代码,我们可以进一步改进`MonthlyCalendar`类,使其不仅输出每日的日期,还包含星期几的信息,并在每个月份结束时明确指出该月总共有多少天。以下是改进后的代码:
```java
import java.util.Calendar;
import java.util.Scanner;
public class ImprovedMonthlyCalendar {
public static void main(String[] args) {
int year = getYearFromUser();
int month = getMonthFromUser();
// 创建一个Calendar实例并设置年月日
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
// 输出该年的每个月的日历
for (int i = 1; ; i++) {
String dayOfWeek = calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault()); // 获取星期几
System.out.printf("%4d", i).concat(" (").concat(dayOfWeek).concat(")");
if (i == getDaysInMonth(calendar)) {
System.out.println("\n" + "本月共 " + getDaysInMonth(calendar) + " 天");
break; // 结束当前月份的输出
} else if ((i + calendar.get(Calendar.DAY_OF_WEEK) - 1) % 7 == 0) {
System.out.println(); // 每周结束后换行
}
// 更新到下一天
calendar.add(Calendar.DATE, 1);
}
}
private static int getYearFromUser() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份: ");
return scanner.nextInt();
}
private static int getMonthFromUser() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入月份(1-12): ");
return scanner.nextInt();
}
private static int getDaysInMonth(Calendar calendar) {
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
}
```
这个改进版本会在每个日期旁边显示星期几,每月结束后还会显示该月总共有多少天。现在,当你运行程序并输入年份和月份,它将按照这种格式提供详细的日历信息。
阅读全文