JAVA万年历编写
输出任意年份任意月份的日历表
思路:
1.已知1年1月1日是星期日,1 % 7 = 1 对应的是星期日,2 % 7 = 2 对应的是星期一,以此类推;
2.计算当年以前所有天数+当年当月1号之前所有天数;
a.年份分平年闰年,平年365天,闰年366天;
b.闰年的判断方法year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)若为真,则为闰年否则为平年;
c.定义平年/闰年数组,包含各月天数;
d.遍历数组求和,计算当年当月前总天数;
e.当年以前所有天数+当年当月前总天数+1即为1年1月1日到当年当月1日的总天数;
3.总天数对7取模,根据结果判断当月1号是星期几,输出空白区域;
4.输出当月日历表,逢星期六换行
java.util.Scanner;
static );
int//年份
if1 "输入错误!" "请输入月份:" month = sc.nextInt(); (month < || month > //判断非法输入月份
System.out.println( ;
}
//输出表头
System.out.println(+ year + + month + + "日 一 二 三 四 五 六"
//计算当前年份以前所有天数beforeYearTotalDay;每4年一个闰年,闰年366天,平年365天
int1 ) + (year-- ((year - 4;
int,29,31,31,30}; 0,31,30,30,31 ; (year % == || (year % != && year % == //判断当前年份是否是闰年
forint0//for循环计算当月之前总天数
//计算当前月份之前的所有天数
beforeMonthTotalDay = beforeMonthTotalDay + arrLeapYear[i];
}
//判断当月1日是星期几
int1 week = totalDay % //已知1年1月1日是星期日,即模7得1对应的是星期日
forint017 " " " " (i < ) { );
}
if77)) % ) || i == arrLeapYear[month]) {
} { (i = ; i < month ; i ++ ) { totalDay = beforeYearTotalDay + beforeMonthTotalDay + ; (i = ; i < (week - + 7//如果写成i < (week-1)会出现i<-1的情况
System.out.print(//输出开头空白
}
forint1//for循环输出各月天数
System.out.print(i + " " (i % == ((1 <span style='\"background:' 0px;="" none;="" 0);="" 0,="" rgb(0,="" 0pt;="" 245);="" 245,="" rgb(245,="" normal;\"="" 9.5pt;="" monaco;="">}
JAVA万年历编写 输出效果图:
原文链接:http://www.jxszl.com/biancheng/JAVA/446480.html