做一个简单的万年历显示

首先我们需要判断的就是我们要打印的这个月份第一天为星期几

一周七天, 找一个确定日期的天数, 求出这个日期到当前日期的天数和

对 7 取余得到的数就可以判断为星期几了,

已知1900年1月1日为星期一    那么从1900年1月1日到现在的天数和对 7 取余 

如果为0  证明下一天为星期一

如果为1 证明下一天为星期二

以此类推

那么首先我们要得到1900年到输入年份 year之前的年份总天数

代码为

做一个简单的万年历显示_第1张图片

1900年开始依次循环,如果闰年加366天,如果为平年加365天

然后就要求出输入的月份前边的月份天数和了

代码上一篇已经写过,就不在赘述

做一个简单的万年历显示_第2张图片

这样sumyear + summonth就是1900年到输入年份的月份之前的所有天数和了

接下来就是对周几的判断了

根据上边公式  天数和%7+1   就是输出月份第一天的周几数

那根据惯例我们会写出

做一个简单的万年历显示_第3张图片

然后会发现室友规律可循的,输出的空格数,其实就是我们的case里的数值  (\t\t为一个空格)

然后就可以换成如下代码

做一个简单的万年历显示_第4张图片

可以发现代码量减少不是一星半点, 所以方法的选择一定要慎重

接下来就是根据输入的年份和月份判断当月天数了, 只需要一个判断就可以得出结果

做一个简单的万年历显示_第5张图片

接下来就是打印了, 先打出空格, 然后打出当月的天数, 让我们看一下代码

做一个简单的万年历显示_第6张图片

查看一下我们的效果

做一个简单的万年历显示_第7张图片

我们发现只有当余数为7的时候输出是正常的,否则输出换行的时候会发生错误

我们仔细看代码会发现是因为我们判断换行的时候漏掉了空个数所以需要加上,  代码修改后为

做一个简单的万年历显示_第8张图片

再次尝试运行效果

做一个简单的万年历显示_第9张图片

可以正常输出了, 所以一个小的判断失误就会导致程序的错误输出,

所以编程来说细心不断试错的心态是一定要有的

你可能感兴趣的:(java,常见编程题目)