【问题标题】:Seems to be an extra output in nested for loop似乎是嵌套 for 循环中的额外输出
【发布时间】:2013-11-28 11:16:10
【问题描述】:
这段代码:
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 个 js 而不是 5 个。谁能解释我缺少什么?
【问题讨论】:
标签:
java
for-loop
nested-loops
【解决方案1】:
for 在每次循环结束时应用增量。在开始下一个循环之前检查条件,因此在第二个循环开始时,i 将是 6 而不是 5。
通过设置第二个条件j<i 来解决此问题。
【解决方案2】:
你的第一个循环的不变量是
i <= 5
因此循环将继续迭代,直到该不变量不再成立。所以当你到达第二个循环时,你可以确定i不小于等于5;换句话说,它大于 5。
【解决方案3】:
当我未能满足条件i <= 5 时,第一个循环停止,这意味着i=6。
所以第二个循环完全一样
for (j = 1; j <= 6; j++) System.out.print(" j ");
哪个打印 6 j。
【解决方案4】:
在“i for”的末尾,i 等于 6,这就是 j 被打印 6 次的原因。
【解决方案5】:
使用调试然后你会意识到这一点。第一个 for 循环退出 i=6 的时刻,然后你的第二个将运行循环运行 6 次,因为 j 的上限现在是 6。然后你得到6 js
【解决方案6】:
当它完成第一个循环时,i 的值为 6。阅读有关后增量运算符和 for 循环的更多信息。
【解决方案7】:
当j for-loop 进入时,i 将为 6,因为第一个循环将在 i==6 处终止,而不是您所期望的 i==5。