码迷,mamicode.com
首页 > 其他好文 > 详细

简易日历表

时间:2017-11-06 21:20:47      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:public   span   一个   +=   png   ase   1年   计算   中间   

在一个页面上输出1901至2007年之间任意一年的简易日历表

public class Calendar {
    public static void main(String[] args){
        String Weeks="Su Mo Tu We Th Fr Sa";//星期列表
        int i,j;//循环控制列表
        int Ospa3=1;//给出1900年的1月1日为星期一
        //改变year的值(大于1900),就可列出当年的日历表
        int year=2007;
        boolean leap=year%4==0&&year%100!=0||year%400==0;
        for(i=1900;i<year;i++)//计算1901年及其后的每年一月一号对应的星期
            if(i%4==0&&i%100!=0||i%400==0)Ospa3+=2;
            else Ospa3++;
        Ospa3%=7;//表明7天为一个星期
        System.out .println("\t\t\tCalendar of"+year);
        //在屏幕输出星期列表
        for(i=1;i<3;i++)System.out .print(Weeks);//每行中显示3个星期
        System.out .println("");
        int spa1=0,spa2=0,spa3=0,cou1=0,cou2=0,cou3=0;
        //存放连续3个月对应的日期和当月的总天数
        int day1=1,day2=1,day3=1;
        for(j=1;j<28;j++){
            if((j-1)%7==0){
                day1=1;day2=1;day3=1;//设置连续3个月的日期输出均从1号开始
                switch(j/7){//分别设置一年中每个月1日的星期,和当月的总天数
                case 0:
                    spa1=(Ospa3+cou3)%7;cou1=31;//1月
                    spa2=(spa1+cou1)%7;cou2=leap?29:28;//2月
                    spa3=(spa3+cou2)%7;cou3=31;//3月
                    Ospa3=spa3;
                    break;
                case 1:
                    spa1=(Ospa3+cou3)%7;cou1=30;//4月
                    spa2=(spa1+cou1)%7;cou2=31;//5月
                    spa3=(spa3+cou2)%7;cou3=30;//6月
                    Ospa3=spa3;
                    break;
                case 2:
                    spa1=(Ospa3+cou3)%7;cou1=31;//7月
                    spa2=(spa1+cou1)%7;cou2=31;//8月
                    spa3=(spa3+cou2)%7;cou3=30;//9月
                    Ospa3=spa3;
                    break;
                case 3:
                    spa1=(Ospa3+cou3)%7;cou1=31;//十月
                    spa2=(spa1+cou1)%7;cou2=30;//十一月
                    spa3=(spa3+cou2)%7;cou3=31;//十二月
                    Ospa3=spa3;
                    break;
                }
            }
            for(i=1;i<=21;i++){//在屏幕上输出日历,一行输出21列
                if((i-1)/7==0)//每一行的前7列输出第一个月
                    System.out.print(spa1--<=0&&day1<cou1?day1<10?"0"+day1++:""+day1++:"  ");
                else if((i-1)/7==1)//每一行中间7列输出第二个月
                    System.out.print(spa2--<=0&&day2<cou1?day2<10?"0"+day2++:""+day2++:"  ");
                else//每一行的后7列输出第3个月
                    System.out.print(spa3--<=0&&day3<cou1?day3<10?"0"+day3++:""+day3++:"  ");
                if(i%7==0)
                    System.out.print(" ");//每行中,月份之间的空格
            }
            System.out.println("");//换行
        }
    }

}

技术分享

 

简易日历表

标签:public   span   一个   +=   png   ase   1年   计算   中间   

原文地址:http://www.cnblogs.com/ljs-666/p/7794793.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!