我无法将这些if语句从Python嵌套到Java。
def leapyear(yearr):
if (year % 4 == 0):
if (year % 100 == 0):
if (year % 400 == 0):
return True
else:
return False
else:
return True
else:
return False
我目前正在努力将上述内容转换为Java:
boolean leapyear(int year) {
if (year % 4==0) {
if (yearr%100==0) {
if (year%400==0) {
else
return false;
}
else
return true;
}
else
return false;
}
}
然而,我的Java转换给了我错误,主要是因为我不认为我的嵌套条件具有正确的闭括号。你能给我一些可以帮我搞清楚的提示或资源吗?
答案 0 :(得分:4)
您的else
语句也需要大括号,您忘记了最内层return
的{{1}}语句,并且您在一个位置拼错了if
:
yearr
Java并不像Python那样需要缩进,但如果您确实使用它,它有助于使您的分支结构更具可读性:
boolean leapyear(int year) {
if (year % 4==0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
return true;
} else {
return false;
}
} else {
return true;
}
} else {
return false;
}
}
这里你不需要boolean leapyear(int year) {
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
return true;
} else {
return false;
}
} else {
return true;
}
} else {
return false;
}
}
个语句,return
已经评估为布尔值:
year % 400 == 0
或作为单行:
boolean leapyear(int year) {
if (year % 4 == 0) {
if (year % 100 == 0) {
return year % 400 == 0;
} else {
return true;
}
} else {
return false;
}
}
为了完整起见,这是Python版本 I 写它的方式:
boolean leapyear(int year) {
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
或者更好的是,改为使用calendar.isleap()
。
答案 1 :(得分:4)
拥有这么多可能的退出点并不是一个好习惯。此外,如果您不想重新发明轮子,可以使用Java库代码,例如:
boolean isLeapYear(int year){
GregorianCalendar cal = new GregorianCalendar();
return cal.isLeapYear(year);
}
答案 2 :(得分:1)
继承我的尝试:
boolean leapyear(int year)
{
if (year % 4 == 0)
{
if (year % 100 == 0)
{
return (year % 400 == 0);
}
else
{
return true
}
}
return false;
}
或使用此:
return Java.util.GregorianCalendar.getInstance().isLeapYear(year)
答案 3 :(得分:1)
如何完全删除ifs?
public boolean leapyear(int year) {
return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
}
答案 4 :(得分:-2)
boolean leapyear(int year)
{
if (year % 4==0)
{
if (year%100==0)
{
if (year%400==0)
{
return true;
}
else
{
return true;
}
}
else``
{
return false;
}
}
}