以下是一个使用一维数组实现打印中国 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方法的参数来打印指定年份和月份的日历。

Java 一维数组实现 2023 年中国日历 (带注释)

原文地址: https://www.cveoy.top/t/topic/pZ9v 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录