Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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中的嵌套If语句_Java_Python_If Statement - Fatal编程技术网

Java中的嵌套If语句

Java中的嵌套If语句,java,python,if-statement,Java,Python,If Statement,我很难将这些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:

我很难将这些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转换给了我错误,主要是因为我认为我的嵌套条件没有正确的闭括号。您能给我一些提示或资源来帮助我解决这个问题吗?

您的
else
语句也需要大括号,您忘记了最里面的
if
return
语句,并且您在一个位置拼错了
year

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;
    }

}
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;
    }
}
此处不需要太多的
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;
    }
}
或作为一个班轮:

boolean leapyear(int year)   {
    return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
为完整起见,以下是我编写Python版本的方式:

def leapyear(year):
    return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
或者更好的是,改用。

以下是我的尝试:

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)

把ifs全部删除怎么样

public boolean leapyear(int year) {
    return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
}

有这么多可能的出口点不是好的做法。此外,如果您不想重新发明轮子,可以使用Java库代码,例如:

boolean isLeapYear(int year){
  GregorianCalendar cal = new GregorianCalendar();
  return cal.isLeapYear(year); 
}

如果缩进正确(就像Python中的缩进一样),这将更具可读性:-)您忘记了ifs@thumbmunkeys:这告诉你我是一个多么优秀的Python开发人员;我的大括号已经生锈了。你确定你会用Python这样写吗?除了海盗rr:
导入日历
日历.isleap(year)
@Duncan:我正在重写原始函数的逻辑;我也会使用
calendar.isleap(year)
,是的:-p您在某处缺少
else
return
。条件年份%400始终返回true Java是否有DateTime.IsLeapYear()方法?我的Google fu只为dotNet提供了这个方法。如果你想把它放回去,你的意思似乎是If语句可以替换为
return Java.util.Gregorianalendar.getInstance().isLeapYear(year)
A一行:
return year%4==0&(year%400==0 | | year%100!=0)
See;在Java和其他语言中使用多个退出点进行自动资源管理是很好的。当然,使用标准库而不是重新发明轮子要好得多。
boolean isLeapYear(int year){
  GregorianCalendar cal = new GregorianCalendar();
  return cal.isLeapYear(year); 
}