我有两套代码。如果我在循环内创建一个新变量,代码将按预期工作。
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/