美文网首页大数据-简书马士兵Java系统架构师
你会做JAVA万年历表吗?(内配Java学习路线和基础学习视频)

你会做JAVA万年历表吗?(内配Java学习路线和基础学习视频)

作者: 程序员1 | 来源:发表于2019-05-10 14:49 被阅读1次

已知条件:

1900年1月1日是星期一。

闰年的特征:能被4整除且又能不能被100整除 ,或能被400整除。

用Java设计一个万年历程序,效果如下:

程序的关键问题是怎样控制所输入的年月的第一天是星期几,第一天是星期一就不需要打印前面的空白,星期二就打印一个空白...

同时还需要在日期是星期天的时候换行。

而要知道某个日期是星期几只能根据1900.1.1日这个条件来判断,距离7天,14天,21,28.....N个7天后都是星期一,因此需要计算所选年月的1号是星期几来确定1号前面的空白距离以及月份中日期是不是星期天的计算。由此,需要计算所选年月与1900.1.1相距的天数,进一步拆分为年份的累计天数和月份的累计天数。

public static void main(String[] a){

int year=1900;

int month=1;

Scanner scanner=new Scanner(System.in);

System.out.println("请输入你要打印的万能历年份:");

year=scanner.nextInt();

System.out.println("请输入你要打印的万能历月份:");

month=scanner.nextInt();

System.out.print("一 ");

System.out.print("二 ");

System.out.print("三 ");

System.out.print("四 ");

System.out.print("五 ");

System.out.print("六 ");

System.out.print("日 ");

System.out.println(" ");

int totalDay=0;

for(int i=1900;i<year;i++){ //1900年1月1日到所输入的年份1月1日的天数,不包括当年

if((i%4==0 && i%100!=0) || i%400==0){ //闰年

totalDay+=366;

}else{

totalDay+=365;

}

}

//累加当年1月到输入月份1号的天数

for(int i=1;i<month;i++){

if(i==2){

if((year%4==0 && year%100!=0) || year%400==0){ //当前这一年是闰年

totalDay+=29;

}else{

totalDay+=28;

}

}else if(i==4 || i==6 || i==9 || i==11){

totalDay+=30; //4,6,9,11月固定30天,2月28或29天,其他月份固定31天

}else{

totalDay+=31;

}

}

int monthDays=0;//当前这个月的天数,用来控制打印多少个数字

if(month==2){

if((year%4==0 && year%100!=0) || year%400==0){ //当前这一年是闰年

monthDays=29;

}else{

monthDays=28;

}

}else if(month==4 || month==6 || month==9 || month==11){

monthDays=30;

}else{

monthDays=31;

}

//总天数与1900.1.1相距多少个7天都是星期一,1900.1.1是星期一,1900.1.8后也是星期一,距离7天,

int _1_xq= (totalDay)%7; //N个7天后都是星期一,余数为0表示星期一,由于我们是从星期一到星期天的顺序显示,是星期一就打印0个 ,星期二就打印1个 ,星期三就打印2个 ...n-1个

//控制月份的第一天的位置,余数为几就打印几个

for(int t=0;t<_1_xq;t++){

System.out.print(" ");

}

for(int i=1;i<=monthDays;i++){

int xq=((totalDay+i-1)%7);//相距多少天要减一,1.1到1.8

System.out.print(i);

if(xq==6){ //余数是六表示星期日,是星期日就换行

System.out.println(" ");

}else{

System.out.print(" ");

}

}

}

运行结果:

=====================================

可获取Java视频资料和学习路线:里面包含源码、课件、工具下载!

你学会了吗?学不会请看这里:

可获取Java视频资料和学习路线:里面包含源码、课件、工具下载!

1.在评论区转发/评论

2.在最下方星号点击收藏一下

3.利用简信,私信小编: 学习

相关文章

网友评论

    本文标题:你会做JAVA万年历表吗?(内配Java学习路线和基础学习视频)

    本文链接:https://www.haomeiwen.com/subject/wgdaoqtx.html