使用foreach循环输入2D数组

Som*_*nha 3 java arrays foreach for-loop

我想将以下传统for循环转换为foreach循环:

for(int i=0;i<3;i++)
    for(int j=0;j<3;j++)
        arr[i][j]=sc.nextInt();
Run Code Online (Sandbox Code Playgroud)

我的尝试是:

for(int[] innerArr: arr)
    for(int ele: innerArr)
        ele = sc.nextInt();
Run Code Online (Sandbox Code Playgroud)

这不起作用.我认为,因为innerArr代表一行数组,并ele代表该行中的单个元素,上面的代码将起作用.但我想只有该元素的现有值arr[i][j]被复制到ele.是否可以使用foreach循环为该元素赋值?

Era*_*ran 6

不,这是不可能的.增强的for循环为您提供Iterable迭代的数组元素(或元素)的副本,因此为它们赋值不会更改原始数组(或Iterable).

增强的for循环尝试相当于:

for(int i = 0; i < arr.length; i++) {
    int[] innerArr = arr[i];
    for(int j = 0; j < innerArr.length; j++) {
        int ele = innerArr[j];
        ele = sc.nextInt();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您应该坚持使用传统的for循环.