确定闰年

时间:2012-10-19 04:25:43

标签: leap-year

这是我的要求,我需要知道我做对了吗? 确定年份是否为闰年算法 如果年份可以平均除以4,则为闰年    o除非年份可以平均除以100,否则它不是闰年       除非年份可以平均除以400,否则它是闰年 否则,它不是闰年

private static boolean isLeapYear(int userInput){
        boolean leapYear= false;

        if (userInput % 4 == 0 ){
            leapYear = true;

            if (userInput % 4 == 0 && userInput % 100 ==0) {
                leapYear = false;

                if(userInput % 400 == 0){
                    leapYear = true;
                }
            }
        }
        else {
            leapYear = false;
        }

        return leapYear;
        }

8 个答案:

答案 0 :(得分:0)

我在C ++中使用过这个。

return((userInput%400)||((userInput%4)&&!(userInput%100)));

答案 1 :(得分:0)

最好在有效的闰年使用此条件 (((year%4 == 0) && (year%100 !=0)) || (year%400==0))

这是一个类似的C program to check leap year

答案 2 :(得分:0)

我使用了这个简短的方法:

private static Boolean isLeapYear(int year) {
        return year % 4 == 0 ? (year % 100 == 0 ? ( year % 400 == 0 ? true : false) : true) : false ;
    }

答案 3 :(得分:0)

year = int(input("Enter year to determine if it is a leap year"))

def leap_year(year):
    """This is a function to determine if a year
       is a leap year"""
    if year%4==0 and year%100!=0:
        print("This is a Leap year")
        if year%400==0:
            print ("This is a Leap year")
    else:
        print ("This is not a leap year")    


leap_year(year)

答案 4 :(得分:0)

从1700年到1917年,官方日历为儒略历。从那时起,我们就使用公历系统。从儒略历到公历的转换发生在1918年,即1月31日之后的第二天是2月14日。这意味着1918年的第32天是2月14日。

在两个日历系统中,2月是唯一一个天数可变的月份,a年有29天,其他所有年份有28天。在儒略历中,leap年可被4整除,而在格里高利历中,leap年可为以下之一:

可除以400。

可以被4整除,不能被100整除。

因此leap年的程序将是:

def leap_notleap(year):

    yr = ''
    if year <= 1917:
        if year % 4 == 0:
            yr = 'leap'
        else:
            yr = 'not leap'
    elif year >= 1919:
        if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
            yr = 'leap'
        else:
            yr = 'not leap'
    else:
        yr = 'none actually, since feb had only 14 days'

    return yr

答案 5 :(得分:0)

使用 python 和其他语言,您可以使用以下属性:如果减去 1 天到三月,您将获得二月的最后一天。如果是闰年,那一天是29。

from datetime import datetime, timedelta

def is_leap_year(year: int):
    marzo = datetime(year, 3, 1)
    febrero = marzo - timedelta(1)
    if febrero.day == 29:
        return True
    else:
        return False

答案 6 :(得分:0)

<块引用>

每年能被 4 整除的年份都是闰年,除了 对于可以被 100 整除的年份,但这些百年年份 如果它们能被 400 整除,则为闰年。例如, 1700年、1800年和1900年不是闰年,而是1600年和1600年 2000 是。[2]

— 美国海军天文台

来源:https://en.wikipedia.org/wiki/Gregorian_calendar

因此,对于符合闰年资格的年份,它应该是:

  1. 可以被 400 整除 -OR-
  2. 可被 4 整除,但不能被 100 整除

在您的代码中使用此事实,如下所示:

if((userInput % 400 == 0) || (userInput % 4 == 0 && userInput % 100 != 0)) {
     System.out.println(userInput + " is a leap year");
}

对于生产代码,我建议您使用 OOTB java.time API:

if (java.time.Year.isLeap(userInput)) {
    System.out.println(userInput + " is a leap year");
}

Trail: Date Time 了解有关现代日期时间 API 的更多信息。

答案 7 :(得分:-1)

userInput % 4 == 0 && userInput % 100 ==0相当于userInput % 400 == 0

userInput % 4 == 0那么它绝对是闰年所以不需要检查任何其他条件。