java编程之万年历版本迭代1.0到3.0,从面对过程走向面对对象

1.

1.0版本,使用面对过程思维去解决问题,基础的思维

小提示:1900年是日历开始的初始年份:闰年366天,平年365天,大月31天,小月30天,闰年2月29天,平年2月28天
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’

public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入年份:");
        int year=scanner.nextInt();
        System.out.println("请输入月份:");
        int month=scanner.nextInt();

        //判断这个月有几天
        int days;
        if (month==1||month==3||month==5||month==7||month==8||month==10||month==12)
        {
            days=31;
        }else if (month==2){
            if (year%100==0&&year%4==0||year%400==0) days=29;
            else days=28;
        }else days=31;
        System.out.println(month+"月"+days+"天");

         //计算总的年数
        int yearsum=0;
        for (int i = 1900; i <year; i++) {
            if ((i%100!=0&&i%4==0||i%400==0)){
                yearsum+=366;
            }else yearsum+=365;
        }
        System.out.println(yearsum);

        //计算总的月数
        int monthsum=0;
        for (int i = 1; i < month; i++) {
            if (i==1||i==3||i==5||i==7||i==8||i==10||i==12)
            {
                monthsum+=31;
            }else if (i==2){
                if (year%100!=0&&year%4==0||year%400==0) monthsum+=29;
                else monthsum+=28;
            }else monthsum+=30;
        }
        System.out.println(monthsum);
        //使用三元运算符,判断是不是周日
        int week=((yearsum+monthsum+1)%7==0)?7:(yearsum+monthsum+1)%7;
        System.out.println(year+"年"+month+"月1号是周"+week);
        //打印
        //1.先打印格式和空格
        System.out.println("一\t二\t三\t四\t五\t六\t日");
        for (int i = 1; i <week ; i++) {
            System.out.print("\t");
        }
      //2.再打印日期
        for (int i = 1; i <= days; i++) {
            System.out.print(i+"\t");
            if ((yearsum+monthsum+i)%7==0){
                System.out.println();
            }
        }
    }

运行结果:

‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’

2.

2.0版本,逐渐从面向过程升级,使用函数把相同的部分独立出来,这样就可以减少代码量,并且减少函数的程序的重用,增加可读性-------使用方法

‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’

public class Wannianlli1 {
    public static void main(String[] args) {
        //加工过之后的代码
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个年份");
        int year=scanner.nextInt();
        System.out.println("请输入一个月份");
        int month=scanner.nextInt(); 

        //计算大小月
        int days=0;
        days=getDaysMonth(month,year);
        System.out.println(days);
        //计算年
        int yearSum=0;
        for (int i = 1900; i <year ; i++) {
            yearSum+=isPingRun(i)?366:365;
        }
        System.out.println(yearSum);

        //计算月
        int monthSum=0;
        for (int i = 1; i <month ; i++) {
            monthSum+=getDaysMonth(i,year);
        }
        System.out.println(monthSum);
        int week=(yearSum+monthSum+1)%7==0?7:(yearSum+monthSum+1)%7;

        //打印
        //1.打印空格
        System.out.println("一\t二\t三\t四\t五\t六\t日\t");
        for (int i = 0; i <week-1 ; i++) {
            System.out.print("\t");
        }
        //打印日期
        for (int i = 1; i <=days ; i++) {
            System.out.print(i+"\t");
            if ((yearSum+monthSum+i)%7==0) System.out.println();
        }
    }

    /*
    该方法用来判断是平年还是闰年
     */
    public  static boolean isPingRun(int year){
        boolean bool=false;
        if (year%100!=0&&year%4==0||year%400==0){
            bool=true;
        }
        return bool;
    }

    /*
    该方法用来获得输入月份的天数;
     */
    public static int getDaysMonth(int month,int year){
        int days=0;
        if (month==4||month==6||month==9||month==11){
            days=30;
        }else if (month==2){
            days=isPingRun(year)?29:28;
        }else days=31;
        return days;
    }
}

运行结果:

‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’

3.

3.0版本更新,使用面对对象的思维调用类,使用对象调用方法来进行计算

‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’

    public  static  void test6(){
        System.out.println("请输入一个日期:");
        //获取用户输入时间
        String st=new Scanner(System.in).next();
        //将用户输入的字符串类型转换为时间类型
        java.sql.Date dt=java.sql.Date.valueOf(st);
        //获取当前时间//获取用户输入的当前时间
        Calendar instance = Calendar.getInstance();
        instance.setTime(dt);
        //获取用户输入月份的最大天数//获取用户输入的月份的1号是周几
        int days=instance.getActualMaximum(Calendar.DATE);

        //获取1号是周几
        instance.set(Calendar.DATE,1);
        int week=instance.get(Calendar.DAY_OF_WEEK);

        //打印空格
        System.out.println("日\t一\t二\t三\t四\t五\t六\t");
        for (int i = 1; i <=week-1 ; i++) {
            System.out.print("\t");
        }
        //打印日期
        for (int i = 1; i <=days ; i++) {
            System.out.print(i+"\t");
            //获得第i天是一周的第几天 //如果是是一周的第7天就换行
            instance.set(Calendar.DATE,i);
            if (instance.get(Calendar.DAY_OF_WEEK)==7){
                System.out.println();
            }
        }
    }

运行结果:

‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值