ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

闰年

2019-02-05 18:37:55  阅读:310  来源: 互联网

标签:公历 年份 return 闰年 year 400


闰年的判断

下述所讲的闰年都是以公历(格里历)为基准,因为其他类似农历或者其他不一样,插入天数,可能插入一个月

为什么在详细理解和写一遍闰年的判断?

从一开始遇到给定一个年份,然后让你判断是不是闰年公历,从一开始通过观看博客还有百科知道什么是闰年,和怎么判断一个年份是不是闰年,但过一段时间以后,当老师让我们在vim上写一个闰年公历的判断,或者其它特定的场合有关闰年的判断,又突然一脸懵逼,什么是闰年?怎么判断闰年?虽然有一些断断续续的的记忆片段,但总是有一些惘然,所以希望通过理解和写下来,加深自己的记忆和理解,知其然知其所以然。

为什么会出现闰年?

闰年公历是一个日历年含有一个额外的一天加入,以保持所述同步的日历年天文或季节年。由于季节和天文事件在一整天内都没有重复,因此每年具有相同天数的日历会随着时间的推移而漂移。通过插入一年中的额外一天,可以纠正漂移

为什么会有额外的一天加入?

通常的解释是一年有多少天多少个小时和多少分,并不是完全的365天,累计达到一天即24小时以后,就多加一天的年就是闰年。

最根本的原因是地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年。公历的平年只有365日,比回归年短约0.2422日,所余下的时间约为每四年累计一天,故第四年于2月末加一天,使当年的历年长度为366日,这一年就为闰年。现行的公历每400年有97个闰年(精确,具体请看),这样经过四百年就会多出大约3天,因此每四百年要减少三个闰年,所以公历规定:年份是整百数时,必须是400的倍数才是闰年;不是400的倍数的世纪年,即使是4的倍数也不是闰年。

这就是通常所说的:四年一闰,百年不闰,四百年在闰,例如:2000年是闰年,2100年不是闰年

算法步骤

测试的年变量是表示公历中年份数的整数

如果 (年份不能被4整除) 那么 (这是平年)

否则如果 (年份不能被100整除) 那么 (这是闰年)

否则如果 (年份不能被400整除) 那么 (这是平年)

否则 (这是闰年)

Java程序

package informal_essay;

import java.util.Scanner;

//判断闰年(格里历)
public class LeapYear {
    //排除法[所有非闰年]
    public static boolean isLeapYear_1(int year) {
        if (year % 4 != 0){
            return false;
        }else if(year % 100 != 0) {
            return true;
        }else if(year % 400 != 0){
            return false;
        }else {
            return true;
        }
    }

    //直取法[所有闰年]
    public static boolean isLeapYear_2(int year){
        if( (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0 )){
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        System.out.println("输入一个年份:");
        Scanner reader = new Scanner(System.in);
        int year = reader.nextInt();
        boolean isLeap_1 = isLeapYear_1(year);
        boolean isLeap_2 = isLeapYear_2(year);
        System.out.println("该年份是不是闰年:" + "isLeap_1:" + isLeap_1 + "   " + "isLeap_2:" + isLeap_2 );
    }
}

引用

  1. https://en.wikipedia.org/wiki/Leap_year
  2. https://baike.baidu.com/item/%E9%97%B0%E5%B9%B4/27098?fr=aladdin

标签:公历,年份,return,闰年,year,400
来源: https://www.cnblogs.com/ZHMhello/p/10352943.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有