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

标签 java

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

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/

相关文章:

java - Java/POSIX 正则表达式中是否有 `{\pGraph}` 的 Unicode 等效项?

java - 有没有办法在使用通用图像加载器获取图像时指定额外的 header ?

java - 将 JScrollpane 与 drawline() 方法结合使用

java - 解密时最初的几个字符被截断

java - Singleton Runnable 中奇怪的双重日志记录

java - 从java中的字符串中获取整数

java - jetty (9.4.12): Failed startup of context o. e.j.w.WebAppContext@2af004b webapp/,不可用

java - 在 android OnPreferenceClickListener 中调用非静态方法

Java - 访问组件信息

Java同步问题,线程间通信