gpt4 book ai didi

java - 为什么在这里使新变量产生不同的值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:59:50 25 4
gpt4 key购买 nike

我有两套代码。如果我在循环内创建一个新变量,代码将按预期工作。

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));

它应该打印 12。对于第一个它打印 36 而不是 12。我不明白为什么它是 printint 36。

编辑:

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

最佳答案

这是因为:

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;

关于java - 为什么在这里使新变量产生不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57453281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com