Java - 增强型for循环

时间:2015-12-17 09:14:02

标签: java arrays

我刚开始学习java。看看我的代码,使用增强的for循环为2D数组的每个元素添加1。我还在eclipse中附加了我的代码图像。Code for Enhanced for loop

package multi_array;

public class MainClass {

public static void main(String args[]){
    int array[][]={{1,2,3}, {4,5,6}, {7,8,9}};
    add_1(array);
}

public static void add_1(int a[][]){
    for(int[] a_row: a){
        for(int i: a_row){
            a_row[i]+=1;
        }
    }

    for(int[] a_row: a){
        for(int i: a_row){
            System.out.print(a_row[i]+"\t");
        }
        System.out.println("\n");
    }

}
}

现在,当我尝试运行该程序时,我会在下面显示错误消息。我还附上了错误消息的图片。Error message

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at multi_array.MainClass.add_1(MainClass.java:12)
    at multi_array.MainClass.main(MainClass.java:6)

如何更正此代码?

好的朋友首先抱歉我的代码输入不好,毕竟这是我在stackoverflow上的第一个问题。我通过替换

获得了正确的结果
for(int i: a_row){
    a_row[i]+=1;
}

代码

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

但我只是想知道我是否可以通过仅使用foreach循环来获得所需的结果。

2 个答案:

答案 0 :(得分:0)

<?= Html::csrfMetaTags() ?> 包含二维数组的所有行 访问a_row行的a_row[i]值,但您没有i 在您的代码中更改如下

a_row[3]

答案 1 :(得分:0)

您的问题是i的值大于数组中的值。

你遇到了这个问题,因为你在循环中使用数组的实际元素作为索引。

当我查看您的方法名称时,我认为您只想增加数组中的每个整数。

您可以通过以下方式修复代码:

    for(int[] a_row: a)
    {
        for(int i:a_row)
        {
            i += 1;
        }
    }

我认为你应该阅读foreach-loops如何工作。关于这个主题的问题已经有了很好的答案:here