【问题标题】:The value of the loop counter of a for loop is one larger than I expect after exit from the loop [closed]退出循环后,for循环的循环计数器的值比我预期的大一[关闭]
【发布时间】:2013-10-05 10:30:16
【问题描述】:

我有一个简单的 for 循环,它让循环计数器 i 增加到 5。

 int i;
 double n = 1 / 2; 
 for (i = 2; i <= 5; i++) {
    n = n + 1.0 / i; 
 }
 System.out.print(i);

所以我希望循环结束后计数器的值为 5。但是值是 6,nit 5。这是为什么呢?

谢谢

【问题讨论】:

  • 因为末尾有一个i++?阅读this
  • 另外,double n = 1 / 2; 变为 0 而不是 0.5,因为您正在进行整数除法。要使其成为 0.5,您必须写 1.0 / 2.0(至少一个数字必须是双倍)。
  • i 增加,直到 for 循环中的条件不再为真。 5 &lt;= 5 是真的,但 6 &lt;= 5 是假的。因此,它停止了。
  • 因为这就是循环的设计方式。也许阅读精美的手册?
  • 在提问之前请尝试遵循此指南:meta.stackexchange.com/questions/156810/…

标签: java loops for-loop


【解决方案1】:

因为您在 for{..} 循环中将 i 值递增为 i++

for (i = 2; i <= 5; i++)
                     ^ here

在for循环中检查条件后,会执行body部分

在该增量或减量完成之后

流程将是

               <----
     1step  2step  4step
for (i = 2; i <= 5; i++){
  /*body part*/
   3step
}

在第 4 步之后,它会检查第 2 步,即条件部分

这就是为什么它将i 值打印为

6

【讨论】:

    【解决方案2】:

    for 循环:

    for (i = 2; i <= 5; i++) {
        // code
    

    }

    条件为i &lt;= 5,当i = 6 循环中断时,条件为false,进入打印行。

    谢谢你提醒我第一次编程的经历,当我曾经写过代码a = 5 并打印出来看看它在控制台中显示的内容时。 :)

    【讨论】:

      【解决方案3】:

      i++i = i + 1 相同。在这种情况下,您也可以使用++i 并获得相同的结果。

      【讨论】:

        猜你喜欢
        • 2019-05-05
        • 2016-02-27
        • 2014-03-22
        • 1970-01-01
        • 2011-01-22
        • 1970-01-01
        • 1970-01-01
        • 2015-07-18
        • 2022-06-13
        相关资源
        最近更新 更多