なぜ新しい変数が、ここでは異なる値を結果として作りますか?

Rosbby:

私は、コードの2セットを持っています。私は、ループ内で新しい変数を作成する場合、それはに仮定しますと、コードが動作します。

public static int subsequentLeapYear(int year) {
    for(int i =1; i < 9; i++) {
        int nextYear = year + i;
        if(isLeapYear(nextYear)) {
            return nextYear;
        }
    }
    return 0;
}

public static int subsequentYear(int year) {
    for(int i = 1; i < 9; i++) {
        year += i;
        if(isLeapYear(year)) {
            return year;
        }
    }
    return 0;
}

}

    System.out.println(subsequentYear(8));
    System.out.println(subsequentLeapYear(8));

それはそれは36 printintだ、なぜ私が理解できないではない12. 36を印刷します最初の1のために12を印刷することとします。

編集:

public static boolean isLeapYear(int year) {
        if(year % 400 == 0) {
            return true;
        }
        if(year % 100 != 0 && year % 4 == 0) {
            return true;
        }
        return false;
    }
ガブリエレMariotti:

それはので起こります。

int nextYear = year + i;

year常に同じ値

例:

i=1 -> nextYear = 8 +1 = 9;
i=2 -> nextYear = 8 +2 = 10;

中:

year += i;

今年は、常に同じ値ではありません。

i=1 -> year = 8 +1 = 9;
i=2 -> year = 9 +2 = 11;

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=230534&siteId=1