java实现万年历(附完整源码)
时间: 2023-11-09 09:07:44 浏览: 520
java课程设计:万年历系统的设计
4星 · 用户满意度95%
以下是Java实现万年历的完整源码:
```java
import java.util.Scanner;
public class CalendarDemo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入月份:");
int month = input.nextInt();
// 计算该月的天数
int days = getDaysOfMonth(year, month);
// 计算该月第一天是星期几
int firstDayOfWeek = getFirstDayOfWeek(year, month);
// 输出日历表头
System.out.println("日\t一\t二\t三\t四\t五\t六");
// 输出该月的日期
int day = 1;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
if (i == 0 && j < firstDayOfWeek) {
System.out.print("\t");
} else if (day > days) {
System.out.print("\t");
} else {
System.out.print(day + "\t");
day++;
}
}
System.out.println();
}
}
// 计算指定年份指定月份的天数
public static int getDaysOfMonth(int year, int month) {
int[] daysOfMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && isLeapYear(year)) {
return 29;
}
return daysOfMonth[month - 1];
}
// 判断指定年份是否为闰年
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 计算指定年份指定月份第一天是星期几
public static int getFirstDayOfWeek(int year, int month) {
int days = 0;
for (int i = 1900; i < year; i++) {
days += isLeapYear(i) ? 366 : 365;
}
for (int i = 1; i < month; i++) {
days += getDaysOfMonth(year, i);
}
days++;
return days % 7;
}
}
```
实现思路:
1. 要求用户输入年份和月份;
2. 根据输入的年份和月份计算该月的天数;
3. 根据输入的年份和月份计算该月第一天是星期几;
4. 输出日历表头;
5. 输出该月的日期。
实现细节:
1. 计算该月的天数时,需要判断闰年;
2. 判断闰年的公式为:能被4整除但不能被100整除,或者能被400整除;
3. 计算该月第一天是星期几时,需要先计算该年自1900年1月1日以来的天数,然后再加上该月之前的天数。
阅读全文