二维数组
一、定义方法
int[][] arr; int[] arr[]; int arr[][];
二维数组的理解:一个一维数组中的每一个元素又是一个以为数组
二、二维数组的初始化
(1)静态初始化:int[][] arr = {{1,1},{2,2},{3,3}}
,
(2)动态初始化
-
int[][] arr = new int[n][m]
可以理解成生成一个n 行 m 列的二维矩阵(即二维数组)
int[][] arr;
arr = new int[3][3];
Java 中允许列数不确定,可以动态分配
int[][] arr = new int[3][];
for(int i = 0; i < arr.length; i++){arr[i] = new int[i+1];
}
for(int i = 0; i < arr.length; i++){for(int j = 0; j < arr[i].length; j++){arr[i][j] = i+1;}
}
for(int i = 0; i < arr.length; i++){for(int j = 0; j < arr[i].length; j++){System.out.print(arr[i][j] + " ");}System.out.println("");
}
1
2 2
3 3 3
三、二维数组的应用:杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
特点如下
-
(1)第一行有 1 个元素,第 n 行有 n 个元素
-
-
(3)从第三行开始,对非首尾元素,其值由公式计算:
代码实现
int[][] yanghui = new int[10][];for( int i = 0; i < yanghui.length; i++){yanghui[i] = new int[i+1];for( int j = 0; j < yanghui[i].length; j++){ if( j == 0 || j == yanghui[i].length-1){yanghui[i][j] = 1;}else{yanghui[i][j] = yanghui[i-1][j] + yanghui[i-1][j-1];}}
}for(int i = 0; i < yanghui.length; i++){for(int j = 0; j < yanghui[i].length; j++){System.out.print(yanghui[i][j] + " ");}System.out.println("");
}
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1