Java 万年历1.0 代码与解析

1.

键盘录入 用户输入年份和月份,Scanner 类是用于获取输入的非常常用的类。它属于 java.util 包,因此在使用之前需要导入。用int整型来接受年或月

System.out.println("请输入一个年份:");
Scanner input =new Scanner(System.in);
int year=input.nextInt();//接收整数
System.out.println("请输入月份:");
int month=input.nextInt();

2.

定义一个整型days来存当月的总天数,12个月天数是不一样的1,3,5,7,8,10,12月有31天,4,6,9,11月有30天,2月特殊:平年28天闰年29天,所有用if判断输入的月份是几月,输出对应的天数.

定义一个整型yearsum来存输入年的总天数,for循环遍历从1900年到输入的年数有多少天,因为分平年闰年,所有也要用if判断, 1900年是日历的初始年份.

yearsum+=366 等于 yearsum=yearsum+366

year%100==0&&year%4==0||year%400==0是用来判断平闰年

  • 如果年份能被4整除,那么它可能是闰年;
  • 但是,如果年份能被100整除,则它不是闰年;
  • 然而,如果年份能被400整除,则它又是闰年。
        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=30;
        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);

3.

定义整型monthsum来存总的月数,for循环来遍历从一月开始到输入的月份,一样要判断不同月份不同天数

        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);

4.

定义整型week来存某年某月的一号是周几,用(yearsum+monthsum+1)%7来计算,用三元运算判断如果week==0那么week=7.

输出语句打印日历表头,用for循环来打空格,再用for循环输出天数,如果week==0换行

        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");
        }
        //
        for (int i = 1; i <= days; i++) {
            System.out.print(i+"\t");
            if ((yearsum+monthsum+i)%7==0){
                System.out.println();
            }
        }

5.

结果展示

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值