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