题目要求:
本题要求实现一个方法,可计算出每个月1号对应的星期数。例如用户输入2020,9,2020年9月1日对应的是星期二,则该应该返回2。
注:1800年1月1日是周三。
计算的范围是1800年及以后。
思路:
基姆拉尔森计算公式
Week=(Day + 2Month + 3(Month+1)/5 + Year + Year/4 - Year/100 + Year/400) % 7
(其中的Year是4位数的,如2009。“%”号是等式除7取余数)
注意:
i. 该公式中要把1月和2月分别当成上一年的13月和14月处理。
例如:2008年1月4日要换成 2007年13月4日带入公式。
ii.该式对应的与蔡勒公式有点区别:“0”为星期1,……,“6”为星期日。
在这里给出方法被调用进行测试的例子。例如:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int year = input.nextInt();
int month = input.nextInt();
System.out.println(getStartDay(year, month));
}
/* 请在这里填写答案 */
}
private static int getStartDay(int year, int month)
{
{
if(month == 1||month == 2)
{
month += 12;
year--;
}
int week = (1 + 2*month + 3*(month+1)/5+year+year/4-year/100+year/400)%7;
int weekstr = 0;
switch(week)
{
case 0: weekstr=1; break;
case 1: weekstr=2; break;
case 2: weekstr=3; break;
case 3: weekstr=4; break;
case 4: weekstr=5; break;
case 5: weekstr=6; break;
case 6: weekstr=7; break;
}
return weekstr;
}
}