- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class TextControl {
- static int year,monthDay,weekDay; //定义静态变量,以便其它类调用
- public static void main(String[] args) throws IOException
- {
- System.out.print("请输入一个年份:");
- InputStreamReader ir; //以下6行代码接受从控制台输入
- BufferedReader in;
- ir=new InputStreamReader(System.in);
- in=new BufferedReader(ir);
- String s=in.readLine();
- year=Integer.parseInt(s);
- weekDay=firstDay(year); //计算该年第一天是星期几
- System.out.println("/n "+year+"年 ");
- printMonth();
- }
- public static boolean isLeapYear(int y) //叛别是否是闰年
- {
- return ((y%4==0 && y%100!=0) || (y%400==0));
- }
- public static int firstDay(int y) //计算该年第一天是星期几
- {
- long n=y*365;
- for(int i=1;i<y;i++)
- if(isLeapYear(i))
- n+=1;
- return (int)n%7;
- }
- public static void printWeek() //打印标头
- {
- System.out.println("===========================");
- System.out.println("日 一 二 三 四 五 六");
- }
- public static int getMonthDay(int m) //获取每个月的天数
- {
- switch(m)
- {
- case 1:
- case 3:
- case 5:
- case 7:
- case 8:
- case 10:
- case 12: return 31;
- case 4:
- case 6:
- case 9:
- case 11: return 30;
- case 2:
- if(isLeapYear(year)) return 29;
- else return 28;
- default: return 0;
- }
- }
- public static void printMonth() //分别按不同条件逐月打印
- {
- for(int m=1;m<=12;m++) //循环
- {
- System.out.println(m+"月");
- printWeek();
- for(int j=1;j<=weekDay;j++) //按每个月第一天是星期几打印相应的空格
- System.out.print(" ");
- int monthDay=getMonthDay(m); //获取每个月的天数
- for(int d=1;d<=monthDay;d++)
- {
- if(d<10) //以下4行对输出格式化
- System.out.print(d+" ");
- else
- System.out.print(d+" ");
- weekDay=(weekDay+1)%7; //每打印一天后,反应第二天是星期几
- if(weekDay==0) //如果第二天是星期天,便换行。
- System.out.println();
- }
- System.out.println('/n');
- }
- }
这个程序是在某本书上看到的,但是中间一个方法不太清除,下面这段:
- public static int firstDay(int y) //计算该年第一天是星期几
- {
- long n=y*365;
- for(int i=1;i<y;i++)
- if(isLeapYear(i))
- n+=1;
- return (int)n%7;
- }
请知道的同学,老师给予指点,不胜感激
本文详细解析了一个Java程序,该程序能够根据用户输入的年份显示整年的日历。通过计算闰年和平年的天数,确定每周的第一天,并正确地展示每个月的日期布局。
6638

被折叠的 条评论
为什么被折叠?



