数组计数中i ++和i + 1之间的差异

时间:2016-07-11 23:44:44

标签: java increment post-increment

考虑:

int[] aryNums=new int[5];

for (int i=0; i<=5; i++)
{
    aryNums[i] = i++;
    System.out.println(aryNums[i]);
}

为什么这不会给我数组中的值1,2,3,4,5? 相反,它给出了一个例外,如0,0和错误。

如果我改变

aryNums[i] = i++;  \to

aryNums[i] = i+1;

我在数组中得到值{1,2,3,4,5}。 i ++和i + 1之间的区别是什么?

3 个答案:

答案 0 :(得分:7)

++是一个更改&#39; i&#39;它是i = i + 1的简写符号。

i + 1是一个补充语句,它返回正常情况,但它不会改变i的值,因为我没有被重新分配。

您收到错误的原因是因为i++在递增错误之前使用i,而如果您想在递增之后使用++i,则需要使用{{1} (增量,然后使用)。由于i++也会递增您的计数器,因此会跳过某些值。

答案 1 :(得分:3)

a = i++;等于a = i; i = i + 1;

int[] aryNums=new int[5]; //array index starts from 0, so last index is "4"

for (int i=0; i<=5; i++) // 0, 1, 2, 3, 4, "5" -> out of bounds
{
    aryNums[i]=i++; //i++ -> first put the i to arrNums[i], "then" increase i
    System.out.println(aryNums[i]);
}

解决方案:

  • =
  • 移除i <= 5
  • aryNums[i]=i++更改为aryNums[i] = i + 1

答案 2 :(得分:2)

在第一个中,您在循环内递增i以及循环更新的一部分。在第二种情况下,您只需在调用i++时创建一个新整数,而不会影响i中存储的值。

表达式i+1更新存储在i的值,而表达式var list = [2,3] var limitation = 10000 var flag = true var tmp = 0 for (var count = 4 ; count <= limitation ; count += 1 ){ while(flag && tmp <= list.count - 1){ if (count % list[tmp] == 0){ flag = false }else if ( count % list[tmp] != 0 && tmp != list.count - 1 ){ tmp += 1 }else if ( count % list[tmp] != 0 && tmp == list.count - 1 ){ list.append(count) } } flag = true tmp = 0 } print(list) 返回一个新值,而不会影响存储在<fieldset style="display: inline-block;"> <div style="display: inline-block;"> <input type="checkbox" name="{{ category.name }}" id="category" checked> remove rows&nbsp;&nbsp;&nbsp; </div> </fieldset> <div class="panel panel-default col-xs-12"> <table class="table table-striped"> <thead> <tr> <th><strong>ID</strong></th> <th><strong>test test test</strong></th> <th><strong>Institute/Organisation</strong></th> <th><strong>test deadline test</strong></th> </tr> </thead> <tbody> <tr class="category"> <th class="col-xs-1" scope="row"> test </th> <td class="col-xs-5"> test </td> <td class="col-xs-4"> test </td> <td class="col-xs-2"> test </td> </tr> </tbody> </table> </div> 的值。