本题要求实现一个方法,可计算出每个月1号对应的星期数。例如用户输入2020,9,2020年9月1日对应的是星期二,则该应该返回2。
注:1800年1月1日是周三。
计算的范围是1800年及以后。
函数接口定义:
详见主方法中的调用。
裁判测试程序样例:
在这里给出方法被调用进行测试的例子。例如:
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));
}
/* 请在这里填写答案 */
}
输入样例:
在这里给出一组输入。例如:
2020
9
输出样例:
在这里给出相应的输出。例如:
2
static int getStartDay(int year,int month) {
return (getTotalNumberOfDays(year,month)+3)%7;
}
static int getTotalNumberOfDays(int year,int month) {
int ans=0;
for(int i=1800;i
ans+=getNumberOfDaysInYear(i);
}
for(int k=1;k
ans+=getNumberOfDaysInMonth(year,k);
}
return ans;
}
static int getNumberOfDaysInYear(int year) {
if(isLeapYear(year)) {
return 366;
}
else {
return 365;
}
}
static int getNumberOfDaysInMonth(int year,int month) {
if(isLeapYear(year)) {
int days[]= {31,29,31,30,31,30,31,31,30,31,30,31};
return days[month-1];
}
else {
int days[]= {31,28,31,30,31,30,31,31,30,31,30,31};
return days[month-1];
}
}
static boolean isLeapYear(int year) {
if((year%4==0&&year%100!=0)||year%400==0) {
return true;
}
return false;
}