天天看点

用java实现打印日历的方法用java实现打印日历的方法

用java实现打印日历的方法

* 打印2016年的日历方法 */ public static void printCalendar(){ for (int i = 1; i <= 12; i++) { System.out.println("2016年"+i+"月"); System.out.println("-------------------------------------"); System.out.println("日\t一\t二\t三\t四\t五\t六"); int days = getDays(i);//得到第i月有多少天 for(int j = 1 ; j <= days ; j++){ int numDay = getNumDay(i, j);//得到i月j号是2016年第几天 int week = getWek(numDay);//得到i月j号是周几 if(j==1){//号数是一号的时候 String temp = "";//补空位的字符串 for (int k = 0; k < week; k++) { temp = temp+"\t"; } if(week == 6){//如果1号是周六。输出以后就要换行 System.out.println(temp+j); }else{//如果不是,就不需要了 System.out.print(temp+j+"\t"); } }else if(week == 6|| j == days){//不是一号但是是周六或者是该月的最后一天,输出以后就要换行 System.out.println(j); }else{//就不是周六也不是一号也不是该月最后一天 System.out.print(j+"\t"); } } System.out.println("*****************************************"); } } public static int getWek(int numDay){ switch(numDay%7){ case 1: return 5; case 2: return 6; case 3: return 0; case 4: return 1; case 5: return 2; case 6: return 3; case 0: return 4; } return 0; } //5 10 public static int getNumDay(int month,int date){ int numDay=0;//天数 //将指定的月份前几个月的天数累加 for (int i = 1; i < month; i++) { int days = getDays(i);//赋值调用,得到第i月的天数 numDay = numDay + days; } //将指定的天数加起来 numDay = numDay+date; return numDay; } public static int getDays(int month) { switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: return 29; } return 0; }

}