0

我写了一个程序来计算闰年。第二部分是如果年份不是闰年,我必须打印到下一个闰年的年数。对于 2097 年,输出显示距离下一个飞跃还有 3 年,但它应该是 7 年。我想我在最后一行的代码上犯了一个错误。请帮帮我。到目前为止,这是我的代码。

   public static void main(String[] args) {
    // TODO code application logic here
    int year = 2093;


    if((year%4==0) && year%100!=0){           
            System.out.println(year + " is a leap year.");
         }
    else if ((year%4==0) && (year%100==0)&&         (year%400==0)) { 
        System.out.println(year + " is a leap year.");
    }
    else {
        System.out.println(year + " is not a leap year");
        System.out.println(4-(year%4)  + " years untill next leap year");
    }
4

2 回答 2

1

主要代码:

int year = 2093;
if (isLeapYear(year) {
    System.out.println(year + " is a leap year");
} else {
    int moreYears = nextLeapYear(year) - year;
    System.out.println(moreYears + " more years until next leap year");
}

检查年份是否为闰年:

public boolean isLeapYear(int year)
{   
    if (year % 4 != 0)
        return false;
    else if (year % 100 != 0)
        return true;
    else if (year % 400 != 0)
        return false;
    else 
        return true;
}

获取下一个闰年:

public int nextLeapYear(int year)
{
    while( !isLearpYear(year) )
        year++;

    return year;
}
于 2015-02-03T01:24:51.263 回答
1

您的闰年确定似乎是正确的。但是,您正在使用以下表达式根据错误的“每 4 年为闰年”规则计算下一个闰年:

4-(year%4)

您可以通过以下方法找到下一个闰年:

  1. 之后的第二年开始year。使用您已经编写的相同逻辑来确定它是否是闰年。
  2. 如果不是,请继续增加“下一年”的值,直到找到闰年。

if你会发现将你的逻辑放在一个单独的方法中以避免代码和逻辑的重复很有用。

于 2015-02-03T01:18:05.617 回答