先创建一个专门实现打印日历的类(本文为Calendar.java),然后在需要调用该打印日历这个方法的时候就调用Calendar类中的方法即可。
Calendar.java public class Calendar { public static void main(String [] args) { } /** * 判断是否为闰年 * @param year 要判断的年份 * @return 如果是闰年返回true,不是则返回false */ public static boolean isLeapYear(int year) { return (year%4==0&&year%100!=0)||year%400==0; } /** * 计算指定的月份的天数 * @param month 要计算的月份 * @param year 要计算的月份所在的年份 * @return 最后计算的天数 */ public static int countMonthDays(int month,int year) { if(month==4||month==6||month==9||month==11) { return 30; }else if(month==2) { return isLeapYear(year)?29:28; }else { return 31; } } /** * 计算当前年当前月前面的所有月份的天数 * @param nowmonth 当前月份 * @param nowyear 当前年份 * @return 计算后的天数 */ public static int countAllMonthDays(int nowmonth,int nowyear) { int allMonthDays=0; for(int i=1;i<nowmonth;i++) { allMonthDays+=countMonthDays(i,nowyear); } return allMonthDays; } /** * 计算从1900年到当前年的前一年的所有天数 * @param nowyear 当前年 * @return 计算出的天数 */ public static int countAllYearDays(int nowyear) { int allYearDays=0; for(int i=1900;i<nowyear;i++) { allYearDays+=isLeapYear(i)?366:365; } return allYearDays; } public static void printcalendar(int nowyear) { int allYearDays=countAllYearDays(nowyear); for(int i=1;i<=12;i++) { System.out.println(); System.out.println(); System.out.println("\t\t\t"+i+"月"); System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日\t"); int r=(countAllMonthDays(i,nowyear)+allYearDays)%7; for(int j=0;j<r;j++) { System.out.print("\t"); } //打印号数 for(int k=1;k<=countMonthDays(i,nowyear);k++) { if((r+k)%7==0) { System.out.println(k+"\t"); }else { System.out.print(k+"\t"); } } } } }在需要调用打印日历的类中调用Calendar类中的方法:
public class Calender_upgrade { // 需要打印日历 public static void main(String [] args) { // 调用Calendar类方法打印 Calendar.printcalendar(2020); } }这样做的好处是用面向对象的方法将单独的功能交给一个类去实现,可以被重复调用多次。