【问题标题】:increment in for loop in Java where incrementer is also increased within loop [duplicate]在Java中增加for循环,其中incrementer也在循环内增加[重复]
【发布时间】:2022-01-01 05:38:17
【问题描述】:

这里有一些问题似乎与我的相似,但它们似乎都在某些方面有所不同,所以我认为这个问题是独一无二的。

我正在尝试 LinkedIn Skill Assessment for Java 中的问题。该问题的正确答案是该语句将打印 10 次。但我不明白为什么这是正确答案。

代码如下:

public class Main{ 
    public static void main(String[] args) {
        for (int i=0; i<10; i=i++){    
            System.out.println("i first equals " + i);
            i+=1;
            System.out.println("i now equals " + i);
            System.out.println("Hello World!");   
        }  
    }
}

我自己添加了前两个 println 语句以尝试找出代码。

我认为每次循环运行时我都会递增,并且我也会在循环中递增。所以第一次循环运行时,i = 0,然后在循环中 i 增加到 1(i+=1),然后在第一次循环迭代结束时(或第二次开始?)i 增加到 2 (i=i++),然后在循环中 i 增加到 3 (i+=1),依此类推。但是,println 语句显示以下内容:

i first equals 0
i now equals 1
Hello World!
i first equals 1
i now equals 2
Hello World!
i first equals 2
i now equals 3
Hello World!

等等。那么我在这里错过了什么?为什么循环内的增量和循环本身的增量都没有发生?当循环 println 语句说“i 现在等于 1”时,为什么值 1 不进入循环的增量器 i=i++ 并使其变为 2,所以下一次在循环中 println 说“i 首先等于 2”?

【问题讨论】:

  • i=i++ 是有效的无操作。如果去掉循环体内i的增量,循环是无限的。

标签: java for-loop increment


【解决方案1】:

您的 for 循环与

相同
for (int i=0; i<10; /* Do Nothing*/ ){    
    System.out.println("i first equals " + i);
    i+=1;
    System.out.println("i now equals " + i);
    System.out.println("Hello World!");   
}

在这种情况下,i 在 for 循环中以 i+=1 op 递增

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-12
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    相关资源
    最近更新 更多