万年历

来源:互联网 发布:淘宝存在隐形降权吗 编辑:程序博客网 时间:2024/06/10 21:25
import java.util.Scanner;
class Calendar1
{
    public static void main(String[] args)
    {
        //System.out.println("Hello World!");
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入年份:");
        int year=sc.nextInt();
        System.out.println();
        System.out.print("请输入月份:");
        int month=sc.nextInt();
        System.out.println();
        int sum=0;//输入的月份以前一共多少天
        int k=0;//打印前应空的空格数
        int day=days(month,year);

        String [] s=new String[]{"日","一","二","三","四","五","六",};
        //首行
        System.out.println("\t\t"+year+"年"+month+"月");
        System.out.println();
        //第一行星期
        for (int i=0;i<s.length ;i++ )
        {
            System.out.print(s[i]+"\t");
        }
        System.out.println();
        System.out.println();
        /*
        int x=leapYearJudge(year);
        if (x==1)
        {
            System.out.println("闰年");
        }else
        {
            System.out.println("平年");
        }
        int y=days(month,year);
        System.out.println(month+"天数为:"+y);
        */
        //输入的年份以前共多少天
        for (int i=0;i<year-1900;i++ )
        {
            int j=i+1900;
            //接收判断是否为润年的返回值
            int x=leapYearJudge(j);
            if(x==1)
            {
                sum=sum+366;
                //System.out.println(i+"润年:"+sum);
            }
            else
            {
                sum=sum+365;
            }
            
        }
        //System.out.println("年共几天:"+sum);
        for (int i=1;i<month;i++)
        {
            int x=days(i,year);
            sum=sum+x;
        }
        //System.out.println("月共几天:"+sum);

        //System.out.println("距离共几天:"+sum);
        k=(sum+1)%7;
        /*System.out.println("k="+k);
        for (int i=1;i<=k;i++)
        {
            //System.out.print("0"+"\t");
        }*/
        
        for (int i=1;i<=day+k;i++)
        {
            if(i<=k)
            {
                System.out.print("\t");
            }
            else if((i-k)<10)
            {
                System.out.print(" "+(i-k)+"\t");
            }
            else
            {
                System.out.print(i-k+"\t");
            }
            if(i%7==0)
            {
                System.out.println();
            }
        
            
        }




    }
    //计算月份的天数
    public static int days(int month,int year)
    {
        //接收判断是否为润年的返回值
        int judge=0;
        switch(month)
        {
            case 2: judge=leapYearJudge(year);
                    if (judge==1)
                    {
                        return 29;
                    }
                    else
                    {
                        return 28;
                    }
            case 4:
            case 6:
            case 9:
            case 11: return 30;
            default: return 31;
            
        }
    }
    //判断年份是否为润年 1为闰年 0为平年
    public static int leapYearJudge(int year)
    {
        if((year%4==0&&year%100!=0)||(year%400==0))
        {
            return 1;
        }
        return 0;
    }
}