0

うるう年を計算するプログラムを作成しました。2番目の部分は、年がうるう年でない場合、次のうるう年までの年数を出力する必要がある場所です。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 に答える