Java 一维数组实现 2023 年中国日历 (带注释)
以下是一个使用一维数组实现打印中国 2023 年日历的 Java 代码,该代码使用了 Calendar 类来获取日期信息,并根据用户输入的月份打印对应月份的日历。
import java.util.Calendar;
public class Calendar2023 {
public static void main(String[] args) {
// 获取当前日期
Calendar calendar = Calendar.getInstance();
int currentYear = calendar.get(Calendar.YEAR);
int currentMonth = calendar.get(Calendar.MONTH) + 1;
// 打印日历
printCalendar(2023, currentYear, currentMonth);
}
public static void printCalendar(int year, int currentYear, int currentMonth) {
// 创建一个长度为 12 的一维数组,表示每个月的天数
int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 判断是否为闰年
if (isLeapYear(year)) {
daysInMonth[1] = 29;
}
// 打印指定月份的日历
for (int month = 1; month <= 12; month++) {
// 判断是否为当前月份,若是则打印
if (currentYear == year && currentMonth == month) {
System.out.println('-------- ' + year + '年' + month + '月 日历 --------');
System.out.println('日 一 二 三 四 五 六');
// 获取指定月份的第一天是星期几
Calendar firstDayOfMonth = Calendar.getInstance();
firstDayOfMonth.set(year, month - 1, 1);
int firstDayOfWeek = firstDayOfMonth.get(Calendar.DAY_OF_WEEK);
// 打印空位,即上个月的剩余末尾
for (int i = 1; i < firstDayOfWeek; i++) {
System.out.print(' ');
}
// 打印日期
for (int day = 1; day <= daysInMonth[month - 1]; day++) {
System.out.print(day + ' ');
// 换行
if ((day + firstDayOfWeek - 1) % 7 == 0) {
System.out.println();
}
}
// 打印下个月开头的空位
int lastDayOfWeek = (firstDayOfWeek + daysInMonth[month - 1] - 1) % 7;
if (lastDayOfWeek != 6) {
for (int i = lastDayOfWeek + 1; i <= 6; i++) {
System.out.print(' ');
}
}
System.out.println('
-----------------------------');
}
}
}
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
请注意,这段代码将打印当前年份和月份的日历。您可以根据需要修改printCalendar方法的参数来打印指定年份和月份的日历。
原文地址: https://www.cveoy.top/t/topic/pZ9v 著作权归作者所有。请勿转载和采集!