2.二维数组

2.二维数组

二维数组

二维数组的定义:

int[][]arr=new int[2][3];//2行3列的二维数组

该程序表示开辟6个整数的连续空间,依次存储arr[0][0]、arr[0][1]、arr[0][2]、arr[1][0]、arr[1][1]、arr[1][2]。

二维数组可以看作若干个一维数组。Java二维数组每一行的长度可以不同,如图1.4.3所示。

图1.4.3 Java二维数组的逻辑图

int[][]arr=new int[2][];//定义二维数组arr,有两行(一定是先确定最高维的长度)

arr[0]=new int[2];//arr第0行是长度为2的一维数组

arr[1]=new int[4];//arr第1行是长度为4的一维数组

也可以通过赋初值定义二维数组:

int[][]arr={{1,2},{1,2,3,4}};

初值将决定二维数组arr内存空间的分配,如图1.4.4所示。

图1.4.4 Java二维数组赋初值

【例4.5】需求:打印10行杨辉三角形(如图1.4.5所示)。

图1.4.5 杨辉三角形

杨辉三角形的规律:每一行的第一个和最后一个元素为1,中间的各元素是上一行正对元素和前一元素之和。

分析:首先,观察到需要一个二维数组来存储元素,第0行有1个元素,第1行有2个元素,…,第i行就有i+1个元素,需按照这个规律来开辟数组的空间。然后,按照杨辉三角形的规律给数组赋值。每一行的赋值规律:第0列赋值为1;第1列到第i-1列赋值为上一行两个元素之和;第i列元素赋值为1。

【代码4.5】

代码4.5

若把二维数组的每个数组元素看作是一个一维数组,那二维数组就可当作一维数组来处理。依此类推,可以推演出n维数组的处理方式,这里就不延展了。