万年历(Java版)思路解析

前言

在学习Java过程中,万年历是一道必不可少的练习题。它可以进一步加深我们对Java语言的理解和掌握。这篇我就先讲一下练习万年历的过程中一些思路。

内容要求

  1. 能够显示实现1900年以后包括1900年的日期
  2. 能够判断所输入的年份是否为闰年

思路

  1. 记录时间都是从1900年1月1日开始,因为这天正好也是星期一

  2. 闰年的概念:

    • 普通闰年
      能被4整除,但不能被100整除。
      (year%4 == 0)&&(year%100 != 0)
    • 世纪闰年
      能被400整除。
      (year%400 == 0)
  3. 遍历出从1900年到输入年份i的总天数

    • 平年365天
    • 闰年366天
    if(((i%4 == 0 && i%100 != 0))||(i%400 == 0)){
        totalDays += 366;
    }else{
        totalDays += 365;
    }
    
  4. 循环累计月份i的天数

    • for循环遍历月份
    • switch语句确定月份i的天数
    • 二月分闰月和平月
    if (isRunNian){
        days = 29;
    }else{
        days = 28;
    }
    
  5. 将具体的时间遍历出来,遍历之前需要考虑星期前的空格

    int beforeDays;//日期前面的\t
    beforeDays = totalDays % 7 + 1;
    if (beforeDays == 7){
        beforeDays = 0;//前面无空格,即为星期天
    }
    //打印日期
    for (int i = 1; i <= days; i++) {
        System.out.print(i+"\t");
        //满七个换行
        //日期前的\t+遍历到的日期=7,就换行
        if ((beforeDays+i)%7 == 0){
            System.out.println();
        }
    }
    

    tips:加1的原因是我们是从星期天排列开始的

  6. 接着遍历空格并打印出来

    //遍历时间,先打印日期前面的\t
    for (int i = 0; i < beforeDays; i++) {
        System.out.print("\t");
    }
    
  7. 打印日期

  8. 因为一周七天,所以7为换行要求。日期前的\t+遍历到的日期=7

    for (int i = 1; i <= days; i++) {
        System.out.print(i+"\t");
        //满七个换行
        //日期前的\t+遍历到的日期=7,就换行
        if ((beforeDays+i)%7 == 0){
            System.out.println();
        }
    }
    

代码实现链接https://blog.csdn.net/qq_45871809/article/details/118299667

  • 10
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值