手记

java实现最基础的日历

这是之前有个讲师教我的,但他并没有完全讲完,留下一部分让我们自己完成,非常感谢这位姓许的老师给我成长的机会。首先这段日历代码是最基础的,它没有任何图形化用户界面,没有调用其它类(当然了 Scanner类是用户输入是必须要的),用最简单最直接的办法让我们理解日历的原理,当然这段代码是有很多bug的,比如:当用户输入的不是数字,或者输入的数值过分的大或者过分的小等等,我都没有去处理,因为我只是想简单的理解日历,只有你理解了原理,就可以依照你自己的想法为所欲为了。最后,希望看过的各位下伙伴儿能制作出动感而不失风格的用户界面(bug一定要处理好,不然会打脸的!)。努力吧,小伙伴儿们!!!

import java.util.Scanner;

public class Rili {

    public void rili(){
        int n=0;//保存用户输入的年份
        int y=0;//保存用户输入的月份
        int z=0;//保存计算的总天数
        int x=0;//保存计算得出的星期
        int t=0;//保存每月的天数
        //创建输入对象
        Scanner in=new Scanner(System.in);
        System.out.println("请输入要查询的年份:");
        //获取用户输入的年份
        n=in.nextInt();
        System.out.println("请输入要查询的月份:");
        //获取用户输入的月份
        y=in.nextInt();
        //从1900年1月1日开始到用户输入的年份一共有多少天
        for(int i=1900;i<n;i++){
            //判断是否是闰年,瑞年366天平年365天.
            //闰年的条件是能被4整除不能被100整除或者能被400整除
            if(i%4==0&&i%100!=0i%400==0){
                z+=366;
            }else{
                z+=365;
            }
        }

        //判断输入的月份,首先判断是否是2月,闰年2月29天,平年2月28天
        //然后判断是否是大月1.3.5.7.8.10.12是31天,其余是30天
        for(int i=1;i<y;i++){
            if(i==2){
                if(n%4==0&&n%100!=0n%400==0){
                    z+=29;
                }
            }else if(i==1i==3i==5i==7i==8i==10i==12){
                z+=31;
            }else if(i==4i==6i==9i==11){
                z+=30;
            }
        }

        //输出星期
        System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");

        //得到的总天数除以7余数是几就是星期几
        x=z%7;

        //循环输出星期几之前的空格
        for(int i=0;i<x;i++){
            System.out.print("\t");
        }

        //判断输入的月份是否是大月,大月就是31天,否则是30天
        if(y==1y==3y==5y==7y==8y==10y==12){
            t=31;
        //如果是小月就是30天
        }else if(y==4y==6y==9y==11){
            t=30;
        //如果是2月,则判断当年是否是闰年
        }else if(y==2){
            if(n%4==0&&n%100!=0n%400==0){
                t=29;
            }else{
                t=28;
            }
        }

        //循环输出天数,如果当天为星期六则换行继续输出
        //\n为换行符    \t为空七个空格
        for(int i=1;i<=t;i++){
            if(z%7==6){
                System.out.print("\n"+i);
            }else{
                System.out.print("\t"+i);
            }
            //每计算一次星期几,总天数都要加一次,因为星期加一总天数也要加一
            z++;
        }

    }
      //测试类
    public static void main(String[] args) {
        new Rili().rili();

    }

}
4人推荐
随时随地看视频
慕课网APP