我对二维数组的迭代有疑问。为什么这适用于 System.out.println(n)而不是 System.out.println(row [n])?我正在尝试打印所有数字。
public class test
{
public static void main(String[] args){
int numbers[][] = {{1,2,3}, {4,5,6}};
for (int [] row : numbers){
for (int n: row){
System.out.println(n);
}
}
}
}
答案 0 :(得分:1)
因为您最终访问了数组之外的数字。在此示例中,第一次迭代为{1,2,3}
,第二次迭代为{4,5,6}
。第一次迭代的前两次迭代(让我们称之为x
)将起作用,因为x [1]和x [2]仍然在数组中。之后,您正在尝试打印x [3],它不在数组中。
第二次迭代的迭代也是一样(让我们称之为y
)。
您正在尝试打印y [4],y [5],y [6],但y只有3个值。
答案 1 :(得分:0)
n
的第一个值为1且row[1]
存在,它是rows
中的第二个项目(请注意,索引从0开始)但是n
将是2,你的数组没有第二个元素,只有第0个元素和第一个元素,所以你得到ArrayIndexOutOfBoundsException
。