前言
在学习Java过程中,万年历是一道必不可少的练习题。它可以进一步加深我们对Java语言的理解和掌握。这篇我就先讲一下练习万年历的过程中一些思路。
内容要求
- 能够显示实现1900年以后包括1900年的日期
- 能够判断所输入的年份是否为闰年
思路
-
记录时间都是从1900年1月1日开始,因为这天正好也是星期一。
-
闰年的概念:
- 普通闰年
能被4整除,但不能被100整除。
(year%4 == 0)&&(year%100 != 0)
- 世纪闰年
能被400整除。
(year%400 == 0)
- 普通闰年
-
遍历出从1900年到输入年份i的总天数
- 平年365天
- 闰年366天
if(((i%4 == 0 && i%100 != 0))||(i%400 == 0)){ totalDays += 366; }else{ totalDays += 365; }
-
循环累计月份i的天数
- for循环遍历月份
- switch语句确定月份i的天数
- 二月分闰月和平月
if (isRunNian){ days = 29; }else{ days = 28; }
-
将具体的时间遍历出来,遍历之前需要考虑星期前的空格
int beforeDays;//日期前面的\t beforeDays = totalDays % 7 + 1; if (beforeDays == 7){ beforeDays = 0;//前面无空格,即为星期天 } //打印日期 for (int i = 1; i <= days; i++) { System.out.print(i+"\t"); //满七个换行 //日期前的\t+遍历到的日期=7,就换行 if ((beforeDays+i)%7 == 0){ System.out.println(); } }
tips:加1的原因是我们是从星期天排列开始的
-
接着遍历空格并打印出来
//遍历时间,先打印日期前面的\t for (int i = 0; i < beforeDays; i++) { System.out.print("\t"); }
-
打印日期
-
因为一周七天,所以7为换行要求。日期前的\t+遍历到的日期=7
for (int i = 1; i <= days; i++) { System.out.print(i+"\t"); //满七个换行 //日期前的\t+遍历到的日期=7,就换行 if ((beforeDays+i)%7 == 0){ System.out.println(); } }
代码实现链接:https://blog.csdn.net/qq_45871809/article/details/118299667