Java做万年历制作讲解
万年历其实可分为5步来做,下面我们来详细分析下步骤:
a:先输出提示语句,并接受用户输入的年、月。
b:根据用户输入的年,先判断是否是闰年。
C:根据用户输入的月来判断月的天数。
D:用循环计算用户输入的年份距1900年1月1日的总天数。
E:用循环计算用户输入的月份距输入的年份的1月1日共有多少天。
F:相加D与E的天数,得到总天数。
G:用总天数来计算输入月的第一天的星期数。
H:根据G的值,格式化输出这个月的日历!
其实有些步骤是可以合并的,这得靠大家自己的习惯了,下面我们就来一步一步来完成万年历。<这里只提供讲解,没有源码下载哦!其实大家不必去网上下载,那有意思吗?我们学习是为了什么啊!要下载那就不必来这了!呵呵,发表下自己的看法!>
这里大家肯定都能看得懂的,1:这是为了美化,我们编的程序是让别人看的,所以就要输出个标题的。
2:这里就是用来接收用户输入的信息,并赋值给两个变量!这个相信大家都能看得懂!
3:这里我们就要开始万年历的真正开发了,看完代码大家都知道这是要进行闰年判断了,这里大家要先明白判断闰年的条件是什么?(条件:这个年首先不是整百年就是最后两位是0的年,因为如果是的话就要除以400了,并且还要能被4整除的或者就是整百年能被400除尽的年是闰年)这里声明了一个boolean值,用来储存是否是闰年,因为咱们后面要用得到的!
下面就要进行第二步了,来处理用户输入的月了,看完后大家都明白了吧!这里要用if来判断输入的月份,我们给月份分类,有这几种情况:有31天,有30天,有29天,有28天,下面我们就要想明白每个类的判断条件了?(条件:有31天的月是1、3、5、7、8、10、12,有30天的月是4、6、9、11,剩下就是2月了,它有两种情况,就是根据第一步的boolean值来判断了,如果为true就是29天,为false则是28天了。)这里用到了一个变量tian,因为咱们后面还要用到的,这些变量可以在做到后面再回来补上的。
好了,到了这大家都应该知道该做什么了吧!呵呵咱们要根据1900年1月1号星期一来退出现在的星期,所以就要计算总天数,这里咱们分段计算,先计算整年的,从1900年到你输入的那年,先声明一个变量用累加来储存总天数,然后用for循环从1900年来循环,在循环的途中我们还要用来判断所循环的年数是否为闰年,还是用阶段一的条件,如果是闰年就加366,不是的话加365,循环跳出条件为:循环的年数要小于你输入的年份,咱们先别计算你输入的年,它不是一个整年。等循环完后就是整年数所具有的天数了!
现在咱们进行到了第四步,前面计算了整年的天数了,那现在咱们就要开始计算你输入的年份,据你输入的月份的天数了,那条件大家想一下,呵呵对了,就是和上一步一样只是条件换了,先声明一个用来储存天数的变量,然后从1月开始循环,跳出条件就是要小于你输入的月份,然后根据第二步的判断方法来进行天数计算,完后就是这个月到这年1月的总天数了。
呵呵,最后一步了,也是最最主要的一步,这步我们要完成的任务有:1,根据总天数来计算这个月第一天的星期。2,输出空格,因为有的1号是星期六,那咱们就要输入前面的5个空天。3,循环输出每行的日期。4,恭喜……你做完了!
下面咱们来一步一步实现:
1:晕,这不用我说了吧,就是计算前面的总天然后除以7取余,再加上1,不明白这个公式的请慢慢来,比如:今天是星期1,那么10天后怎么算?自己算,然后得出公式。
2:看代码的第4行,用循环来判断的,先想清楚条件?比如:星期5咱们要4个空格,呵呵太简单了吧,条件就是从0开始循环然后小于你计算的星期,是吧!如果成立就输出空格!
3:现在开头固定了,那怎么让它在星期六处换行呢?这里方法很多很多,我就说几种吧,先看下我的,咱们都知道日历的规律吧,同列不同行的两个数的差为7,看代码的第8行,这个公式,就是,先用7减下星期得到一个值,然后用循环的日期去与7取余,得数肯定相等,呵呵!这就是条件,如果相等就换行,还有一种,就是用一个变量去控制每行的输出,如果这行已经输出了7个数了,那么就换行,呵呵,这个挺简单的吧!
参考浏览Copyright © 2008-2012 北大青鸟宁波海曙校区 未经许可,严禁转载,否则将追究法律责任 浙ICP备 07505475 号
地址:宁波市海曙区苍松路55号三层(效实中学斜对面) 电话:0574-27911278 27911279
传真:0574-27911280 网址:http://www.nbqn.net 邮箱:junfeng.cheng@bjqdzq.com
