万年表
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("天\t一\t二\t三\t四\t五\t六"); 33 //初始化日历的第一天的位置 34 for (int i = 0; i < dayOfWeek; i++){ 35 System.out.print("\t"); 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+"\n"); 42 } 43 else { 44 System.out.print(i+"\t"); 45 } 46 } 47 } 48 }
本文作者:HuangBingQuan
本文链接:https://www.cnblogs.com/bingquan1/p/12665429.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步