以下是Java代码,可以实现用户输入年份后输出年历的功能。其中,我用到了Java自带的Calendar类来获取每个月的天数和每个月第一天的星期几,然后根据需求输出年历。
YearCalendar.java
import java.util.Calendar;
import java.util.Scanner;
public class YearCalendar {
public static void main(String[] args) {
// 从控制台获取用户输入的年份
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个年份:");
int year = scanner.nextInt();
// 创建Calendar对象并设置年份
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
// 输出年历
// 循环12个月份
for (int month = 1; month <= 12; month++) {
// 设置月份
cal.set(Calendar.MONTH, month - 1);
// 获取该月第一天是星期几
int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
// 获取该月的天数
int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
// 输出月份和星期几的表头
System.out.println("===" + year + "年" + month + "月===");
System.out.println("日 一 二 三 四 五 六");
// 输出日期
// 先输出每个月1号前的空格
for (int i = 1; i < firstDayOfWeek; i++) {
System.out.print(" ");
}
for (int day = 1; day <= days; day++) {
// 如果是周六,输出时换行
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
System.out.printf("%2d\n", day);
} else {
System.out.printf("%2d ", day);
}
// 加1天
cal.add(Calendar.DATE, 1);
}
// 每个月结束后,输出一个空行
System.out.println();
}
}
}
运行后,程序会提示用户输入一个年份,用户输入后回车即可输出相应的年历,如下图所示:
请输入一个年份:
2022
===2022年1月===
日 一 二 三 四 五 六
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
===2022年2月===
日 一 二 三 四 五 六
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
===2022年3月===
日 一 二 三 四 五 六
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
===2022年4月===
日 一 二 三 四 五 六
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
===2022年5月===
日 一 二 三 四 五 六
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
===2022年6月===
日 一 二 三 四 五 六
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
===2022年7月===
日 一 二 三 四 五 六
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
===2022年8月===
日 一 二 三 四 五 六
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
===2022年9月===
日 一 二 三 四 五 六
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
===2022年10月===
日 一 二 三 四 五 六
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
===2022年11月===
日 一 二 三 四 五 六
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
===2022年12月===
日 一 二 三 四 五 六
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