万年历

package java34;
import java.util.*;
public class 万年历 {

    private static Scanner in;
    private static Scanner sc;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int e,year,mon,b,c;
        boolean a;
        in = new Scanner(System.in);
        while(true)
        {
        System.out.println("----选择功能-----");
        System.out.println("1.判断闰年");
        System.out.println("2.判断某年某月有多少天");
        System.out.println("3.计算某年某月前距离1900年1月1日的总天数");
        System.out.println("4.输出某年某月日历");    
        System.out.println("5.退出");
        sc = new Scanner(System.in);
        e=sc.nextInt();
        switch(e)
        {
        case 1:
            System.out.println("1.判断闰年,请输入年份");
            Scanner sc1=new Scanner(System.in);//输入
            year=sc1.nextInt();
            a=judger(year);
            if(a)
                System.out.println("闰年");
            else
                System.out.println("非闰年");
            break;
        case 2:
            System.out.println("2.判断某年某月有多少天,请分别输入年份,月份");
            Scanner sc2=new Scanner(System.in);//输入
            year=sc2.nextInt();
            Scanner sc3=new Scanner(System.in);//输入
            mon=sc3.nextInt();
            b=judgeday(year,mon);
            System.out.println(year+"年"+mon+"月:"+b+"天");
            break;
        case 3:    
            System.out.println("3.计算某年某月前距离1900年1月1日的总天数,请分别输入年份,月份");
            Scanner sc4=new Scanner(System.in);//输入
            year=sc4.nextInt();
            Scanner sc5=new Scanner(System.in);//输入
            mon=sc5.nextInt();
            c=days(year,mon);
            System.out.println(year+"年"+mon+"月"+"距离1900年1月1日的总天数:"+c);
            break;
        case 4:
            System.out.println("4.输出某年某月日历,请分别输入年份,月份");
            Scanner sc6=new Scanner(System.in);//输入
            year=sc6.nextInt();
            Scanner sc7=new Scanner(System.in);//输入
            mon=sc7.nextInt();
            rl(year,mon);
            break;
        case 5:
            System.exit(0);
            
        }
        }

    }
    
    public static boolean judger(int year){//判断闰年
    
        if(year%4==0&&year%100!=0)
            return true;
        else if(year%400==0)
            return true;
        else
            return false;
        
    }
    
    public static int judgeday(int year,int mon){//判断某年某月有多少天
        boolean a;
        if(mon==4||mon==6||mon==9||mon==11)    
            return 30;
        else if(mon==2)
        {
            a=judger(year);
            if(a)
            return 29;
            else
            return 28;
        }
        else if(mon>12)
            {System.out.println("输入月份错误!");
            return 0;}
        else
            return 31;
    }


    public static int days(int year,int mon)//距离1900年1月1日的总天数
    {
        int i,days=0;
        boolean j;
        for(i=1900;i<year;i++)//
        {
            j=judger(i);
            if(j)
                days=days+366;
            else
                days=days+365;
        }
        for(i=mon-1;i>0;i--)//不包含此月
        {    
            days=days+judgeday(year,i);
        }
        
        return days;
    }
    
    public static void rl(int year,int mon)
    {
        int a,b,c,i,j;
        a=days(year,mon);
        b=judgeday(year,mon);
        c=a%7+1;//星期几
        System.out.println(year+"年"+mon+"月1日:星期"+c);
        System.out.println("日"+"\t"+"一"+"\t"+"二"+"\t"+"三"+"\t"+"四"+"\t"+"五"+"\t"+"六");
        for(j=0;j<c;j++)
        {
            if(c==7)
                break;
        System.out.print(" \t");
        }
        for(i=1;i<=b;i++){
                System.out.print(i+"\t");
                if((c+1)%7==0)
                    System.out.print("\n");
                c++;
        }
        System.out.print("\n");
        
    }
            
    }
        

 

posted @ 2017-09-26 20:42  张畅  阅读(251)  评论(0)    收藏  举报