为什么这个循环显示这个输出?

时间:2016-12-24 11:36:30

标签: java for-loop

for (int i = 1; i < 5; i++) {
    int j = 0;
    while (j < i) {
        System.out.println("i = " + i + "\tj = " + j);
        j++;

    }
}

输出结果为:

i = 1        j = 0   
i = 2        j = 0
i = 2        j = 1
i = 3        j = 0
i = 3        j = 1
i = 3        j = 2
i = 4        j = 0
i = 4        j = 1
i = 4        j = 2
i = 4        j = 3

我的问题是,为什么第二行中 j = 0 的值,即使我们在显示第一行后增加它?

另外,为什么 i = 2 两次, i = 3 三次?

5 个答案:

答案 0 :(得分:1)

你在第一个循环中声明了int j=0;,所以每当外循环运行j的值设置为0时。

i的重复值的原因是内循环。每次循环运行时,i的值都是相同的。

答案 1 :(得分:0)

因为你说“直到j是&lt; than i”你增加j但是当j = i时增量停止所以你有j重复j的每一个增量。 我对你的程序应该做什么感到有点困惑但如果我明白你应该这样解决你的代码:

for (i = 0; i < 5; i++) {
   int j;
   for (j = 0; j < i; j++) {
   System.out.println("i = "+i+"\tj = "+j);
   }
}

答案 2 :(得分:0)

for 循环在外循环的第二次迭代中将j重新初始化为0,就像在外循环的每次迭代中一样。因此第二行将j显示为0.

由于在外部 for 循环的第二次和第三次迭代中,内部循环分别执行两次和三次,但外部循环变量值在外部循环的迭代期间保持不变。因此,i = 2且i = 3显示两次且三次。

答案 3 :(得分:0)

代码中的j变量和i变量如下所示:

  • i = 2:j = 0-&gt; 1:打印2次

  • i = 3:j = 0-&gt; 1-> 2打印3次 ...

答案 4 :(得分:0)

这个概念称为嵌套循环。 for循环是外循环,其值为1到4.在内部while循环中,j的值初始化为0并且直到j = i-1(因为在while中提到的条件) -loop是j&lt; i)。

您输入for循环的第一次迭代(i = 1)。现在输入while循环的第一次迭代(j = 0)。条件为真(0 <1)。打印i = 1 j = 0。在while循环的下一次迭代中,j = 1,条件为假(1不是&lt; 1)。因此,while循环现在已退出。

现在在for循环的第二次迭代中,i值递增(i = 2)。现在输入while循环的第一次迭代(j = 0)。条件为真(0 <2)。打印i = 2 j = 0。在while循环的下一次迭代中,j = 1,条件为真(1 <2)。打印i = 2 j = 1。在while循环的下一次迭代中,j = 2,条件为假(2不是<2)。因此,当循环退出时。

正如您所看到的,在for循环打印的第一次迭代中只执行一次。并且在for循环打印的第二次迭代中执行两次。这是因为打印的执行取决于j的值小于i(每次增加1)。这种模式将重复,对于i = 3,print语句将被执行三次,依此类推。

希望你理解。如果没有,请随时在评论中清除您的疑虑。