【问题标题】:Difference between i++ and i+1 in array count [duplicate]数组计数中 i++ 和 i+1 之间的差异 [重复]
【发布时间】:2016-11-14 01:07:12
【问题描述】:

考虑:

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 有什么区别?

【问题讨论】:

    标签: java increment post-increment


    【解决方案1】:

    ++ 是一个将“i”的值更改为 1 的运算符。它是 i = i + 1 的简写符号。

    i + 1 是一个加法语句,它返回它通常会返回的值,但它不会改变 i 的值,因为 i 没有被重新分配。

    您收到错误的原因是因为i++ 在递增它之前使用了i,而如果您想在递增之后使用它,则需要使用++i(递增,然后使用)。由于i++ 也在增加你的计数器,一些值将被跳过。

    【讨论】:

    • 第三段是对第一段的一个非常重要的补充,因为它解释了前增量运算符和后增量运算符之间的区别。
    【解决方案2】:

    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 &lt;= 5 中删除=
    • aryNums[i]=i++ 更改为aryNums[i] = i + 1

    【讨论】:

      【解决方案3】:

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

      表达式i++ 更新存储在i 的值,而表达式i+1 返回一个新值而不影响存储在i 的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-07
        • 1970-01-01
        • 1970-01-01
        • 2010-09-13
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 2011-09-22
        相关资源
        最近更新 更多