在Java中嵌套If语句

时间:2014-03-28 10:58:25

标签: 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:
       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转换给了我错误,主要是因为我不认为我的嵌套条件具有正确的闭括号。你能给我一些可以帮我搞清楚的提示或资源吗?

5 个答案:

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