【问题标题】:Why for loop update statement cant be updated inside the loop [closed]为什么for循环更新语句不能在循环内更新[关闭]
【发布时间】:2019-09-22 05:57:22
【问题描述】:

我正在尝试更新循环内的 for 循环变量 i,为什么我无法更新它并且 i 始终为 0?


public class HelloWorld{

     public static void main(String []args){
        for (int i = 0; i < 10 ; ){
            i = i ++;
            System.out.println(i);
        }
     }
}

我期待打印出来

0 1 2 3 4 5 6 7 8 9

但它是一个无限循环并且打印出所有的0。

【问题讨论】:

  • i++的返回值是多少?它是进行增量之前的值;所以 i 正在递增,然后重新分配旧值(您可以完成 i = i + 1 - 分配添加的值 1 - 将完美工作,或者只是 i++,没有分配,大多数程序员所做的,在 @987654327 内@)

标签: java for-loop counter


【解决方案1】:

您可以,但使用i = i ++; 您不会增加计数器。请改用i++ - 它是一个不返回新值的运算符,只会增加原语。

请记住,for 循环旨在包含有关循环的信息。如果您在循环之外操作计数器,您可能会失去对正在发生的事情的跟踪。不建议这样做,最好在那个地方使用while

【讨论】:

  • 这应该是评论,而不是答案。
  • @round关于为什么?
  • @Eran 当然,这就是它编译的原因 - 我的意思是“新的”,忘记写了。谢谢。
  • 谢谢,我试过 i = ++i;有用。如果 i = i ++; i++ 最终会被执行,为什么不能更新?
  • @rickyfok 你所做的是. assign i` 到i,然后递增,但递增的值从未使用过。使用i = ++i,您首先要增加值,然后将新值分配给变量i
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多