已知1900年1月1日是星期一
平年有365天,除以7的余数是1,所以可以得出平年的1月1日和12月31日是同一个星期的结论。而假如是闰年,那就是错开一个星期。
完整源代码:
package jjj;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner aa=new Scanner(System.in);
System.out.println("请输入年月日,用回车分隔");
int nian=aa.nextInt();
int yue=aa.nextInt();
int ri=aa.nextInt();
//判断到这一年的前一年是不是闰年
int move=0;
for(int i=1900;i<nian;i++)
{
if((i%100!=0&&i%4==0)||(i%400==0))
{move=move+2;}
else
{move=move+1;}
}
//再判断这一年到这一天经过了多少天,也就是某个日期是一年中的第几天
int BB; int day=0;String weekday="00"; //2月天数
if((nian%100!=0&&nian%4==0)||(nian%400==0))
{BB=29;}else{BB=28;}
switch(yue) {
case 1:day=0+ri;break;
case 2:day=31+ri;break;
case 3:day=31+BB+ri;break;
case 4:day=31+BB+31+ri;break;
case 5:day=31+BB+31+30+ri;break;
case 6:day=31+BB+31+30+31+ri;break;
case 7:day=31+BB+31+30+31+30+ri;break;
case 8:day=31+BB+31+30+31+30+31+ri;break;
case 9:day=31+BB+31+30+31+30+31+31+ri;break;
case 10:day=31+BB+31+30+31+30+31+31+30+ri;break;
case 11:day=31+BB+31+30+31+30+31+31+30+31+ri;break;
case 12:day=31+BB+31+30+31+30+31+31+30+31+30+ri;break;
}
int day2=day%7;
int moveall=(move+day2)%7;
switch(moveall)
{
case 0:weekday="周日";break;
case 1:weekday="周一";break;
case 2:weekday="周二";break;
case 3:weekday="周三";break;
case 4:weekday="周四";break;
case 5:weekday="周五";break;
case 6:weekday="周六";break;
}
System.out.println(weekday);
}
}
运行结果: