首页 > 其他 > 详细

输入年份,打印日历

时间:2021-06-21 20:44:44      阅读:18      评论:0      收藏:0      [点我收藏+]
 1 //:
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4 import java.io.BufferedReader;
 5 public class Calendar2 {
 6     static int year;
 7     static int weekDay;
 8     public static void main(String[] args) throws IOException {
 9         System.out.println("Please input Year: ");
10         InputStreamReader ir = new InputStreamReader(System.in);
11         BufferedReader in = new BufferedReader(ir);
12         String s = in.readLine();
13         year = Integer.parseInt(s);
14         weekDay = (int)firstDayOfYear(year);
15         System.out.println("                             "+year+"年日历");
16         System.out.println("=============================================================");
17         for (int i=1;i<=12;i++){
18             System.out.println();
19             printMonth(i);
20             System.out.println();
21             System.out.println("==============================================================");
22         }
23     }
24     public static void printMonth(int m){
25         printHead(m);
26         int day = dayOfMonth(m);
27         for (int i=1;i<=day;i++){
28             if(i<10){
29                 System.out.print("\t "+i);
30             }
31             else System.out.print("\t"+i);
32             weekDay = (weekDay+1)%7;
33             if(weekDay==0){
34                 System.out.println();
35                 System.out.print("\t\t\t\t  \t");
36             }
37         }
38     }
39     public static int dayOfMonth(int m){
40         switch(m){
41             case 1:
42             case 3:
43             case 5:
44             case 7:
45             case 8:
46             case 10:
47             case 12:
48                 return 31;
49             case 4:
50             case 6:
51             case 9:
52             case 11:
53                 return 30;
54             case 2:
55                 if (isLeapYear(year)) return 29;
56                 else return 28;
57 
58         }
59         return 0;
60     }
61     public static void printHead(int m){
62         System.out.println(m+"\t"+"月"+"\t"+"\t\t\t\t"+"日"+"\t"+"一"+"\t"+"二"+"\t"+"三"+"\t"+"四"+"\t"+"五"+"\t"+"六");
63         System.out.print("\t\t\t\t  \t");
64         for(int i=1;i<=weekDay;i++){
65             System.out.print("\t  ");
66         }
67     }
68     public static long firstDayOfYear(int y){
69         long n;
70         n=y*365;
71         for(int i=1;i<=year;i++){
72             if (isLeapYear(i)){
73                 n+=1;
74             }
75         }
76         return n%7;
77     }
78     public static boolean isLeapYear(int i){
79         return (i%4==0 && i%100!=0) || i%400==0;
80     }
81 }
82 ///:~

技术分享图片

目前发现计算第一天星期几(weekDay)有问题,比如2000年,未找到解决方法。

输入年份,打印日历

原文:https://www.cnblogs.com/AsmLearner/p/14914450.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!