似乎是嵌套for循环中的额外输出

时间:2013-11-28 11:16:11

标签: java for-loop nested-loops

此代码:

   for (i = 1; i <= 5; i++)
          System.out.print(" i ");
   for (j = 1; j <= i; j++)
          System.out.print(" j ");
         System.out.println();

提供以下输出:

 i  i  i  i  i  j  j  j  j  j  j 

我无法理解为什么它会给出6个j而不是5个。任何人都可以解释我缺少的东西吗?

7 个答案:

答案 0 :(得分:4)

每次循环结束时,

for都会应用增量。在开始下一个循环之前检查条件,因此在第二个循环开始时i将是6而不是5。

通过改为使用第二个条件j<i来解决此问题。

答案 1 :(得分:3)

你的第一个循环的不变量是

i <= 5

因此循环将继续迭代,直到该不变量不再成立。因此,当您到达第二个循环时,您可以确保i 小于或等于5;换句话说,它大于 5。

答案 2 :(得分:2)

i j输入时,

for-loop将为6,因为第一个循环将在i==6终止,而不是i==5

答案 3 :(得分:2)

当条件i <= 5失败时,第一个循环停止,这意味着i=6

所以第二个循环与

完全相同
 for (j = 1; j <= 6; j++) System.out.print(" j ");

打印6 j。

答案 4 :(得分:2)

在“i for”结束时,i等于6,这就是为什么j被打印6次。

答案 5 :(得分:2)

完成第一个循环后,i的值为6。阅读有关后增量运算符和for循环的更多信息。

答案 6 :(得分:2)

使用调试然后你会通过你的赢家意识到这一点。循环退出i=6的第一个时刻然后第二个将运行循环运行6次,因为j的上限现在是6。然后你得到6 js