package unitTest_code.test.Calendar;
/***
* 打印 每一年度的日历及该日历每一周在该年度中属于第几周
*
*/
import java.util.Scanner;
public class Calendar {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入年份(1900——2099):");
int year = input.nextInt();
int Total = 0;//统计总天数
final String WeekHead="日 一 二 三 四 五 六";
if(year>=1900&&year<=2099){
boolean isLeapYear = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? true : false;
int[]aa=new int[isLeapYear?366:365];//创建数组
//统计天数
for (int i = 1900; i < year; i++) {
Total += ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) ? 366 : 365;
}
Total%=7;
//将星期几存入数组中,每一天都对应了星期几
for (int i = 0; i <aa.length ; i++,Total++) {
Total%=7;
aa[i]=Total;
}
// 输出每个月的日历
int count=0;
int weekCount=0;
for (int i = 1; i <=12 ; i++) {
System.out.println("
"+year+"年"+i+"月");
System.out.println(WeekHead);
int maxday = 31;
switch (i){//判断月份的最大天数
case 2:
maxday = isLeapYear?29:28;
break;
case 4:case 6:case 9:case 11:
maxday =30;
break;
}
for (int j = 0; j <=aa[count] ; j++) {
if((aa[count]+1)%7==0)
break;
else{
System.out.print(" ");
}
}
for (int j = 1; j <=maxday ; j++) {
System.out.print(j +" ");
if((aa[count]+1+j)%7==0&&j!=maxday){
weekCount++;
System.out.println( "第"+weekCount+"周");
}
}
count+=maxday;
}
}else {
System.out.println("年份输入有误,请重试");
}
}
}
请输入年份(1900——2099):
2020
2020年1月
日 一 二 三 四 五 六
1 2 3 4 第1周
5 6 7 8 9 10 11 第2周
12 13 14 15 16 17 18 第3周
19 20 21 22 23 24 25 第4周
26 27 28 29 30 31
2020年2月
日 一 二 三 四 五 六
1 第5周
2 3 4 5 6 7 8 第6周
9 10 11 12 13 14 15 第7周
16 17 18 19 20 21 22 第8周
23 24 25 26 27 28 29
2020年3月
日 一 二 三 四 五 六
1 2 3 4 5 6 7 第9周
8 9 10 11 12 13 14 第10周
15 16 17 18 19 20 21 第11周
22 23 24 25 26 27 28 第12周
29 30 31
2020年4月
日 一 二 三 四 五 六
1 2 3 4 第13周
5 6 7 8 9 10 11 第14周
12 13 14 15 16 17 18 第15周
19 20 21 22 23 24 25 第16周
26 27 28 29 30
2020年5月
日 一 二 三 四 五 六
1 2 第17周
3 4 5 6 7 8 9 第18周
10 11 12 13 14 15 16 第19周
17 18 19 20 21 22 23 第20周
24 25 26 27 28 29 30 第21周
31
2020年6月
日 一 二 三 四 五 六
1 2 3 4 5 6 第22周
7 8 9 10 11 12 13 第23周
14 15 16 17 18 19 20 第24周
21 22 23 24 25 26 27 第25周
28 29 30
2020年7月
日 一 二 三 四 五 六
1 2 3 4 第26周
5 6 7 8 9 10 11 第27周
12 13 14 15 16 17 18 第28周
19 20 21 22 23 24 25 第29周
26 27 28 29 30 31
2020年8月
日 一 二 三 四 五 六
1 第30周
2 3 4 5 6 7 8 第31周
9 10 11 12 13 14 15 第32周
16 17 18 19 20 21 22 第33周
23 24 25 26 27 28 29 第34周
30 31
2020年9月
日 一 二 三 四 五 六
1 2 3 4 5 第35周
6 7 8 9 10 11 12 第36周
13 14 15 16 17 18 19 第37周
20 21 22 23 24 25 26 第38周
27 28 29 30
2020年10月
日 一 二 三 四 五 六
1 2 3 第39周
4 5 6 7 8 9 10 第40周
11 12 13 14 15 16 17 第41周
18 19 20 21 22 23 24 第42周
25 26 27 28 29 30 31
2020年11月
日 一 二 三 四 五 六
1 2 3 4 5 6 7 第43周
8 9 10 11 12 13 14 第44周
15 16 17 18 19 20 21 第45周
22 23 24 25 26 27 28 第46周
29 30
2020年12月
日 一 二 三 四 五 六
1 2 3 4 5 第47周
6 7 8 9 10 11 12 第48周
13 14 15 16 17 18 19 第49周
20 21 22 23 24 25 26 第50周
27 28 29 30 31