编写程序,输入年份,打印出该年的年历(12个月的),如下图所示。 提示:使用Calendar类得到一个Calendar类对象,先求出输入年份的1月1日是星期几, 然后通过循环打印出每个月的日历,注意大小月和闰月问题。(首先实例化一个Calendar对象,然后将年份设置为输入的年份,将月份设置为1月,日期设置为1日。然后,我们通过调用get()方法来获取1月1日是星期几(get(Calendar.DAY_OF_WEEK)),这将帮助我们确定每个月份的第一天是星期几。接下来,我们循环打印出1到12月份的日历。对于每个月份,我们设置月份和日期为1,然后通过循环打印出这个月的每一天。在循环结束后,我们将月份加1,以便打印下一个月的日历。最后,我们打印出12月份的日历,这里只需要将第一个星期几减去第一个星期几所占的位数即可。)
时间: 2024-02-23 11:59:06 浏览: 116
好的,以下是Java代码实现:
```java
import java.util.Calendar;
public class YearCalendar {
public static void main(String[] args) {
int year = 2022; // 输入年份
int monthDays[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每个月的天数(2月需要判断是否为闰年)
// 创建Calendar对象并设置年份
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
// 计算1月1日是星期几
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;
// 循环打印12个月份的日历
for (int month = 0; month < 12; month++) {
// 打印月份的标题
System.out.println(String.format("\n%10s %d", getMonthName(month), year));
System.out.println("Su Mo Tu We Th Fr Sa");
// 判断2月份是否为闰年
if (month == 1 && isLeapYear(year)) {
monthDays[1] = 29;
} else {
monthDays[1] = 28;
}
// 打印月份的日历
for (int i = 0; i < dayOfWeek; i++) {
System.out.print(" ");
}
for (int day = 1; day <= monthDays[month]; day++) {
System.out.print(String.format("%2d ", day));
if ((day + dayOfWeek) % 7 == 0) {
System.out.println();
}
}
System.out.println();
// 计算下一个月份的第一天是星期几
dayOfWeek = (dayOfWeek + monthDays[month]) % 7;
}
}
// 判断是否为闰年
private static boolean isLeapYear(int year) {
return (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0));
}
// 获取月份的名称
private static String getMonthName(int month) {
String monthNames[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
return monthNames[month];
}
}
```
输入年份为2022时,输出的年历如下:
```
January 2022
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
February 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28
March 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
April 2022
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
May 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
June 2022
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
July 2022
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
August 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
September 2022
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
October 2022
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
November 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
December 2022
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
```
阅读全文