万年历
需求:输入年和月,打印当月的日历
线索:1900年1月1日是星期一
public static void main(String[] args){ //输入年和月 --- 2024.4 Scanner scan = new Scanner(System.in); System.out.println("请输入年:"); int year = scan.nextInt(); System.out.println("请输入月:"); int month = scan.nextInt(); //计算年的总天数 --- 1900~2023 int allDayOfYear = 0; for(int i = 1900;i<year;i++){ if(i%4==0 && i%100!=0 || i%400==0){ allDayOfYear += 366; }else{ allDayOfYear += 365; } } //计算月的总天数 --- 1~3 int allDayOfMonth = 0; for(int i = 1;i<month;i++){ switch(i){ case 1:case 3:case 5:case 7:case 8:case 10:case 12: allDayOfMonth += 31; break; case 4:case 6:case 9:case 11: allDayOfMonth += 30; break; case 2: if(year%4==0 && year%100!=0 || year%400==0){ allDayOfMonth += 29; }else{ allDayOfMonth += 28; } break; } } //合并总天数 int allDay = allDayOfYear + allDayOfMonth + 1; //计算星期 int week = allDay%7; if(week == 0){ week = 7; } //获取当月的天数 int day = 0; switch(month){ case 1:case 3:case 5:case 7:case 8:case 10:case 12: day = 31; break; case 4:case 6:case 9:case 11: day = 30; break; case 2: if(year%4==0 && year%100!=0 || year%400==0){ day = 29; }else{ day = 28; } break; } //打印日历 System.out.println(year + "年" + month + "月"); System.out.println("一\t二\t三\t四\t五\t六\t日"); int count = 0;//换行 for(int i = 1;i<week;i++){ System.out.print("\t"); count++; } for(int i = 1;i<=day;i++){ System.out.print(i + "\t"); count++; if(count % 7 == 0){ System.out.println(); } } } }