网络技术知识
Java实现万年历效果
下面是“Java实现万年历效果”的完整攻略。
准备工作
在实现万年历之前,需要先了解一些基本知识:
- Java 的日期类 Date、Calendar 和 LocalDate
- Java 的输入输出流,包括 Scanner 和 System.out
- Java 的字符串拼接和格式化输出
- 模块化编程及测试方法
实现步骤
接下来就可以开始实现万年历了。
步骤1:获取用户输入的年份和月份
使用 Scanner 类从控制台读取用户输入的年份和月份。
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scanner.nextInt();
System.out.print("请输入月份:");
int month = scanner.nextInt();
步骤2:计算并输出该月的月历
使用 Calendar 类获取该月的第一天,然后根据每周七天的规律,输出该月的所有日期。注意,每周日要换行。
// 获取该月的第一天
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
// 输出月历
System.out.printf("%d年%d月\n", year, month);
System.out.println("日 一 二 三 四 五 六");
for (int i = 1; i < firstDayOfWeek; i++) {
System.out.print(" ");
}
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 1; i <= maxDay; i++) {
System.out.printf("%2d ", i);
if (firstDayOfWeek % 7 == 0) {
System.out.println();
}
firstDayOfWeek++;
}
其中,getActualMaximum(Calendar.DAY_OF_MONTH)
方法可以获取该月有多少天。
步骤3:模块化编程(可选)
如果觉得上述代码太过臃肿,可以考虑将其封装成方法,以达到模块化编程的效果。例如:
public static void printMonth(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
System.out.printf("%d年%d月\n", year, month);
System.out.println("日 一 二 三 四 五 六");
for (int i = 1; i < firstDayOfWeek; i++) {
System.out.print(" ");
}
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 1; i <= maxDay; i++) {
System.out.printf("%2d ", i);
if (firstDayOfWeek % 7 == 0) {
System.out.println();
}
firstDayOfWeek++;
}
}
这样,就可以直接调用方法,输出某年某月的月历了。
示例1:输出当前月份的月历
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
printMonth(year, month);
}
示例2:输出某年的全年月历
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scanner.nextInt();
for (int month = 1; month <= 12; month++) {
printMonth(year, month);
System.out.println();
}
}
总结
以上就是实现万年历的完整攻略。其核心就是使用 Java 的日期类和输入输出流,以及模块化编程来简化代码。
在实际应用中,我们可以根据不同的需求,来对这份代码进行灵活的修改和扩展。