繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM