万年表

 1 public class Demo {
 2     public static void main(String[] args) {
 3         int totalDay=0; //计算总天数
 4         int dayOfWeek; //保存当月第一天是星期几
 5         //int day=0 ; //当月的天数
 6         int dayOfYear=0; //保存用户输入的年月之前的天数
 7         int sum = 0;
 8         Scanner sc = new Scanner(System.in);
 9         System.out.println("******************欢 迎 使 用 万 年 表******************");
10         System.out.println("请选择年份:");
11         int year = sc.nextInt();
12         System.out.println("请选择月份:");
13         int month = sc.nextInt();
14         //计算用户当年1-1后总天数
15         for(int i = 1900; i <year; i++){
16             if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0){
17                 dayOfYear += 366;
18             }
19             else {
20                 dayOfYear += 365;
21             }
22         }
23         int[] day = {31,28,31,30,31,30,31,31,30,31,30,31}; //当年的月
24         if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
25             day[1] = 29;
26         }
27         for (int i = 0; i < month-1; i++){
28             sum += day[i];
29         }
30         dayOfWeek = ((dayOfYear + sum) + 1) % 7;//核心:算法 求该月的1号是星期几 (当用户输入的年份1-1 以前的所有天数+该月的天数 +1) %7
31         //打印格式
32         System.out.println("天	一	二	三	四	五	六");
33         //初始化日历的第一天的位置
34         for (int i = 0; i < dayOfWeek; i++){
35             System.out.print("	");
36         }
37 
38         for(int i = 1; i <=  day[month-1]; i++){
39             //控制每到星期6就换行,原理为总天数加上当月天数对7取余
40             if (((dayOfYear + sum)+i) % 7 ==6 ){
41                 System.out.print(i+"
");
42             }
43             else {
44                 System.out.print(i+"	");
45             }
46         }
47     }
48 }
原文地址:https://www.cnblogs.com/bingquan1/p/12665429.html