Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java确定闰年?_Java_Leap Year - Fatal编程技术网

使用Java确定闰年?

使用Java确定闰年?,java,leap-year,Java,Leap Year,这是我的要求。确定年份是否为闰年算法: 如果一年可以平均除以4,那就是闰年 除非一年可以平均除以100,否则它不是闰年 除非一年可以平均除以400,否则这是闰年 否则,这不是闰年 我想知道我做得对不对 私有静态布尔值isLeapYearint用户输入{ 布尔年=假; 如果用户输入%4==0{ 闰年=真; 如果userInput%4==0&&userInput%100==0{ 年份=假; ifuserInput%400==0{ 闰年=真; } } } 否则{ 年份=假; } 回归年; } user

这是我的要求。确定年份是否为闰年算法:

如果一年可以平均除以4,那就是闰年 除非一年可以平均除以100,否则它不是闰年 除非一年可以平均除以400,否则这是闰年 否则,这不是闰年 我想知道我做得对不对

私有静态布尔值isLeapYearint用户输入{ 布尔年=假; 如果用户输入%4==0{ 闰年=真; 如果userInput%4==0&&userInput%100==0{ 年份=假; ifuserInput%400==0{ 闰年=真; } } } 否则{ 年份=假; } 回归年; } userInput%4==0&&userInput%100==0等同于userInput%400==0


和USER输入% 4=0,则肯定是闰年,所以不需要检查任何其他条件。

< P>我在C++中使用了这个。p>
返回用户输入%400 | |用户输入%4&&!用户输入%100

最好将此条件用于有效的闰年 第%4年==0年和第%100年=0 | |年%400==0

这是一个类似的例子。

正确!简化:

如果bc已在第一个if中测试,则从第二个if中删除第%4年 删除顶部已设置leap=False的else bc Python:

def is_leap(year):
    leap = False

    if year % 4 == 0:
        leap = True

        if year % 100 == 0:
            leap = False

            if year % 400 == 0:
                leap = True

    return leap
单线:

def is_leap(year):
    return year % 4 == 0 and year % 100 != 0 or year % 400 == 0

我用了这个简短的方法:

private static Boolean isLeapYear(int year) {
        return year % 4 == 0 ? (year % 100 == 0 ? ( year % 400 == 0 ? true : false) : true) : false ;
    }
年=确定是否为闰年的起始年 def leap_年份: 这是一个函数,用于确定一年 这是闰年 如果第%4年==0,第%100年=0: 这是闰年 如果年份%400==0: 这是闰年 其他: 这不是闰年 闰年
从1700年到1917年,官方日历是儒略历。从那时起,我们使用公历制度。从儒略到公历的过渡发生在1918年,1月31日后的第二天是2月14日。这意味着1918年的第32天是2月14日

在这两种日历系统中,二月是唯一天数可变的月份,闰年有29天,其他年份有28天。在朱利安历法中,闰年可被4整除,而在公历中,闰年为以下任一年:

可以被400整除

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

因此,闰年的计划将是:

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
使用python和其他语言,您可以使用这样一个属性:如果将1天减到3月份,则为2月份的最后一天。如果是闰年,那一天是29

从datetime导入datetime,timedelta def是_leap_yearyear:int: marzo=datetimeyear,3,1 febrero=marzo-timedelta1 如果febrero.day==29: 返回真值 其他: 返回错误 每年被四整除就是闰年,除了 这些年可以被100整除,但是这些百年 如果它们可以被400整除,那么它们就是闰年。例如 1700年、1800年和1900年不是闰年,而是1600年和1900年 2000年是[2]

- 美国海军天文台

资料来源:

因此,要将一年称为闰年,它应该是:

可被400整除或- 可以被4整除,但不能被100整除 在代码中使用此事实,如下所示:

if((userInput % 400 == 0) || (userInput % 4 == 0 && userInput % 100 != 0)) {
     System.out.println(userInput + " is a leap year");
}
对于生产代码,我建议您使用OOTB java.time API:


从中了解有关现代日期时间API的更多信息。

如果您想知道是否正确,请编写一些测试。@Greg Hewgill我做了,但不知道答案是否正确!!!:下面是一些测试用例数据:可能很有趣,如果不是重复的问题的话:实际上,这是一个要查看的问题:实际上,它相当于userInput%100==0我的意思是说4*100=400,这与userInput%4==0&&userInput%100相同==0@Tribhuwan这是正确的。你的答案不正确。把400分考试放在最后比较有效。请参阅,虽然此代码可能会回答此问题,但提供有关此代码回答此问题的原因和/或如何提高其长期价值的其他上下文。不知道此OOTB方法
if (java.time.Year.isLeap(userInput)) {
    System.out.println(userInput + " is a leap year");
}