Java中的嵌套If语句
我很难将这些if语句从Python嵌套到JavaJava中的嵌套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:
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);
}