如何使用for循环更改数组中的值

Dan*_*rex 0 java for-loop

关于这段代码,只有两个问题.

  1. 如何遍历数组并实际更改数组中的值.
  2. 为什么foreach不断给我一个出界的例外.它适用于通常的循环(int i = 0; i <anArray.length; i ++),但我之前没有使用过这个foreach?
package experimental;

import java.sql.Array;

public class foreachExp {

    public int[] anArray = {1, 2, 3, 4, 5,};

    public void foreachArray() {
        for (int i : anArray) {
            anArray[i] = i + 1;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Rog*_*gue 5

for-each不能基于数组索引工作但实现迭代解决方案,int i变量将代表来自所提供数组的单个数据元素.所以在循环中,你有效地调用:

anArray[1] = 1 + 1;
anArray[2] = 2 + 1;
anArray[3] = 3 + 1;
anArray[4] = 4 + 1;
anArray[5] = 5 + 1;
Run Code Online (Sandbox Code Playgroud)

如您所见,anArray[5]将超出界限,因为数组的长度仅为5长(0-4)

如果你想改变这些值,你不要使用for-each循环(可能会使用Box某种类型的hacky来做它,但是使用数组它会很愚蠢).

所以使用数组,这将是明智的解决方案:

for (int i = 0; i < anArray.length; i++) {
    anArray[i]++;
}
Run Code Online (Sandbox Code Playgroud)

正如你已经提到的那样