已知公元 1 年 1 月 1 日是星期一。编写一个程序,只要输入年月日,就能回答那天是星期几。java实现
时间: 2024-02-28 17:52:54 浏览: 214
可以使用类似的公式来计算某一天是星期几,具体步骤如下:
1. 计算该年到公元 1 年的天数,记为 yearDays。
2. 计算该月到 1 月的天数,记为 monthDays。
3. 计算该日是该年的第几天,记为 dayOfYear。
4. 计算星期几,公式为:(yearDays + monthDays + dayOfYear) % 7。
以下是一个 Java 的实现:
```java
public class WeekdayCalculator {
public static boolean isLeapYear(int year) {
// 判断是否为闰年
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
public static int getWeekday(int year, int month, int day) {
// 计算该年到公元 1 年的天数
int yearDays = (year - 1) * 365 + IntStream.range(1, year).map(y -> isLeapYear(y) ? 1 : 0).sum();
// 计算该月到 1 月的天数
int[] monthDays = new int[] {31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int monthDaysSum = Arrays.stream(monthDays, 0, month - 1).sum();
// 计算该日是该年的第几天
int dayOfYear = day;
if (month > 2 && isLeapYear(year)) {
dayOfYear += 1;
}
// 计算星期几
int weekday = (yearDays + monthDaysSum + dayOfYear - 1) % 7 + 1;
return weekday;
}
public static void main(String[] args) {
int year = 2021, month = 8, day = 12;
int weekday = getWeekday(year, month, day);
System.out.println(weekday); // 输出 4,即星期四
}
}
```
这个程序中,isLeapYear 函数用来判断是否为闰年,getWeekday 函数接受三个参数 year、month 和 day,返回对应的星期几。我们可以将输入的年月日作为参数传入 getWeekday 函数,得到对应的星期几。
阅读全文