此代码:
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个。任何人都可以解释我缺少的东西吗?
答案 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