关于此代码,只有两个问题。


我如何遍历数组并实际更改数组中的值。
为什么foreach总是给我一个超出范围的异常。对于通常的for循环,它工作正常(int i = 0; i



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;
        }
    }
}

最佳答案

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

anArray[1] = 1 + 1;
anArray[2] = 2 + 1;
anArray[3] = 3 + 1;
anArray[4] = 4 + 1;
anArray[5] = 5 + 1;


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

如果要更改值,则不要使用for-each循环(可以使用某种Box巧妙地做到这一点,但是使用数组则很愚蠢)。

因此,对于数组,这将是明智的解决方案:

for (int i = 0; i < anArray.length; i++) {
    anArray[i]++;
}


正如您已经提到的

关于java - 如何使用for循环更改数组中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24093488/

10-13 04:11