Java程序:闰年计算器

时间:2015-02-03 01:12:01

标签: java leap-year

我写了一个计算闰年的程序。第二部分是如果年份不是闰年,我必须打印下一个闰年的年数。 对于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");
    }

2 个答案:

答案 0 :(得分:1)

您的闰年测定结果是正确的。但是,您正在使用此表达式基于错误的“每4年是闰年”规则来计算下一个闰年:

4-(year%4)

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

  1. year之后的下一年开始。使用您已经编写的相同逻辑来确定它是否是闰年。
  2. 如果不是,请继续增加“明年”值,直到找到闰年。
  3. 您会发现将if逻辑放在一个单独的方法中是有用的,以避免重复代码和逻辑。

答案 1 :(得分: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");
}

Check if a year is a 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;
}