要求:键盘输入一个年份和月份,控制台输出当月的日历
第一种方式,以1900年1月1日为参考点进行编写,纯粹的面向过程的编程形式,重点在于函数的封装和调用思想
之所以以1900年为出发点,是因为当年的一月一日为星期一(如果这天还是农历正月初一那就相当厉害,可惜是腊月初一),可以很方便的计算出从1900年1月1日到所输入日期的总天数,这也是万年历编写的核心算法。
从 1900.1.1 到 输 入 月 份 的 前 一 个 月 月 底 的 总 天 数 + 1 7 = = 0 ? {
{从1900.1.1到输入月份的前一个月月底的总天数 + 1}\over {7}}==0? 7从1900.1.1到输入月份的前一个月月底的总天数+1==0?
如果等于0,说明所输入的月份的第一天为星期日,然后可以循环遍历第一天之前的空格位置以及后面的天数部分。
参考链接
https://blog.csdn.net/dz77dz/article/details/81367050
/*主方法没有列出,这里仅仅列出了几个封装函数方法,主方法为public,方便用户端输入
* 这些封装方法都是内部调用,所以使用了private修饰
*/
/**
* 判断是否为闰年
* @param year int类型,年份
* @return boolean类型,闰年返回true,平年返回false,也用于后面的月份判断
*/
private static boolean DaysOfleapYear(int year) {
if ((0 == year % 4 && 0 != year % 100) || 0 == year % 400