以下是使用一维数组并利用Calendar包编写中国2023年日历的Java代码。代码中添加了注释以说明功能和实现细节。\n\njava\nimport java.util.Calendar;\n\npublic class Calendar2023 {\n public static void main(String[] args) {\n // 创建一个一维数组来存储日历\n String[] calendar = new String[42];\n\n // 获取当前日期\n Calendar currentDate = Calendar.getInstance();\n currentDate.set(2023, 0, 1); // 设置为2023年1月1日\n\n // 获取用户输入的月份\n int month = getUserInput();\n\n // 设置日期为用户输入的月份的第一天\n currentDate.set(Calendar.MONTH, month - 1);\n currentDate.set(Calendar.DAY_OF_MONTH, 1);\n\n // 获取该月的第一天是星期几\n int firstDayOfWeek = currentDate.get(Calendar.DAY_OF_WEEK);\n\n // 将数组中的前firstDayOfWeek-1个位置设置为上个月的剩余末尾\n int previousMonth = month - 1;\n if (previousMonth == 0) {\n previousMonth = 12;\n }\n int previousMonthDays = getDaysInMonth(2023, previousMonth);\n for (int i = 0; i < firstDayOfWeek - 1; i++) {\n calendar[i] = String.valueOf(previousMonthDays - (firstDayOfWeek - 2 - i));\n }\n\n // 填充该月的日期\n int currentDay = 1;\n while (currentDate.get(Calendar.MONTH) + 1 == month) {\n calendar[firstDayOfWeek - 1] = String.valueOf(currentDay);\n currentDate.add(Calendar.DAY_OF_MONTH, 1);\n firstDayOfWeek++;\n currentDay++;\n }\n\n // 打印日历\n printCalendar(calendar, month);\n }\n\n // 获取用户输入的月份\n private static int getUserInput() {\n Scanner scanner = new Scanner(System.in);\n System.out.print("请输入要打印的月份(1-12):");\n int month = scanner.nextInt();\n scanner.close();\n return month;\n }\n\n // 获取指定年份和月份的天数\n private static int getDaysInMonth(int year, int month) {\n int daysInMonth;\n switch (month) {\n case 2:\n if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {\n daysInMonth = 29;\n } else {\n daysInMonth = 28;\n }\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n daysInMonth = 30;\n break;\n default:\n daysInMonth = 31;\n }\n return daysInMonth;\n }\n\n // 打印日历\n private static void printCalendar(String[] calendar, int month) {\n System.out.println("2023年" + month + "月的日历:");\n System.out.println("日 一 二 三 四 五 六");\n\n for (int i = 0; i < calendar.length; i++) {\n if (calendar[i] != null) {\n System.out.printf("%-3s", calendar[i]);\n } else {\n System.out.print(" ");\n }\n\n if ((i + 1) % 7 == 0) {\n System.out.println();\n }\n }\n }\n}\n\n\n注意:此代码仅适用于中国的日历,即星期天为每周的第一天。如果希望适应其他国家的日历,需要相应地调整代码中与星期几相关的部分。


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

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