数组迭代

时间:2018-01-04 17:57:12

标签: java arrays loops

我对二维数组的迭代有疑问。为什么这适用于 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);

            }
        }
    }
}

2 个答案:

答案 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