[英]Seems to be an extra output in nested for loop
这段代码:
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
s,而不是5,任何人都可以解释我缺少的是什么?
for
每次循环结束时应用增量。 在开始下一个循环之前已检查了条件,因此到第二个循环开始时, i
将是6而不是5。
通过使第二个条件j<i
来解决此问题。
您的第一个循环的不变式是
i <= 5
因此循环将继续迭代,直到该不变式不再成立为止。 因此,当您到达第二个循环时,可以确定i
不小于或等于5; 换句话说,它大于 5。
i
将是6时j
for-loop
进入,因为第一循环将终止于i==6
,而不是i==5
如您所愿。
当条件i <= 5
失败时,第一个循环停止,这意味着i=6
。
所以第二个循环就是
for (j = 1; j <= 6; j++) System.out.print(" j ");
其中打印6 j。
在“ i for”的末尾,i等于6,这就是为什么j被打印6次的原因。
完成第一个循环后,i的值为6。 了解有关后增量运算符和for循环的更多信息。
使用debug,然后您会自己意识到这一点。 当下第一个for循环退出i=6
,然后你的第二个会运行循环运行6倍,因为对于上限j
现在是6
。 然后你得到6 js
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.