【发布时间】:2014-07-23 21:44:51
【问题描述】:
考试题:
为以下内容编写一个布尔表达式: A是闰年。
任何帮助将不胜感激!
【问题讨论】:
-
其他部分如...?您能否向我们展示您的尝试以及您遇到的问题?
标签: java
考试题:
为以下内容编写一个布尔表达式: A是闰年。
任何帮助将不胜感激!
【问题讨论】:
标签: java
如果一年能被 4 整除且不能被 100 整除,则它是闰年,但如果能被 400 整除,则它始终是闰年。您可以将其翻译成代码字面意思:
int year = 2004;
boolean leap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
模运算符 (%) 为您提供除数时的余数,因此如果第一个数可被第二个数整除,则它等于 0。
正如 Bathsheba 指出的那样,这仅适用于公历(我们的现代系统自 1582 年以来在某些国家/地区甚至在其他国家/地区更晚),如果您想处理此日期之前的几年,则代码会复杂得多,而且这需要对当时的确切规则进行一些研究。但是,在考试中,您不必担心这些。
【讨论】:
http://en.wikipedia.org/wiki/Leap_year
来自文章伪代码:
if year is not divisible by 4 then common year
else if year is not divisible by 100 then leap year
else if year is not divisible by 400 then common year
else leap year
【讨论】:
if((A%4==0) && A%100!=0)||A%400==0)
【讨论】:
您可以使用此布尔函数来确定闰年:
public static boolean IsLeapYear(int year)
{
if ((year % 4) == 0)
{
if ((year % 100) == 0)
{
if ((year % 400) == 0)
return true;
else
return false;
}
else
return true;
}
return false;
}
这遵循两个规则来确定闰年
第一条规则:能被 4 整除的年份是闰年。 第二条规则:如果年份能被 100 整除,则不是闰年。但如果年份能被 400 整除,则为闰年。
【讨论】:
boolean isLeapYear = ((year % 4 == 0) && year % 100 != 0) || year % 400 == 0);