【发布时间】: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的增量,循环是无限的。