二维数组的定义
简单地说,二维数组就是在数组中又存储了数组,即数组的元素也是数组。
二维数组的创建
和数组一样,二维数组的创建也有动态和静态之分。
1.动态创建
数据类型[][] 数组名 = new 数据类型[m][n];
//例如
int [][] nums1 = new int[3][2]
数据类型 数组名 [][] = new 数据类型[m][n];
//例如
int [nums2 [][] = new int[3][2]
数据类型 [] 数组名[] = new 数据类型[m][n];
//例如
int [] nums3[] = new int[3][2]
注:若想动态创建的时候,使得二维数组里面的数组长度不同,在创建时,不要写n的值
//例如
int [][]nums = new int[2][];
nums[0] = new int[3];
nums[1] = new int[4];
这样就实现了,数组长度不同;
2.静态创建
数据类型 [][] 数组名 = {{值1,值2..},{值1,值2..},{值1,值2..}};
//例如
int [][] nums = {{1,2},{3,45,4},{12,3}};
二维数组的存值和取值
存值
数组名[下标1][下标2] = 值;
nums [0][1] = 12;
取值
数据类型 变量名 = 数组名[下标1][下标2];
int i = nums[1][3]
二维数组的长度
二维数组的长度和数组一致
数组名.length
nums.length
二维数组内某个数组的长度
数组名[下标].length;
nums[5].length;
二维数组的遍历
寻用两层循环,遍历二维数组内里的每一个数组
int [][]nums = new int[3][5];
for(int i=0;i<nums.length;i++){
for(int j=0;j<nums[i].length;j++){
System.out.print(nums[i][j]+" ");
}
System.out.println();
}
杨辉三角
直角杨辉三角
public static void zYangHui() {
//定义二维数组
int nums[][] = new int[5][5];
//直角杨辉三角
for(int i=0;i<nums.length;i++) {
//到j==i就结束,不管后面的值
for(int j=0;j<=i;j++) {
//找规律
//第一例和每一行数和列数相等的为1
if(j==0||j==i) {
nums[i][j]=1;
}else {
//其他的为上面一行的两数相加
nums[i][j] = nums[i-1][j-1]+nums[i-1][j];
}
//输出
System.out.print(nums[i][j]+" ");
}
//换行
System.out.println();
}
}
等腰杨辉三角
public static void dYangHui() {
int nums[][] = new int[5][5];
//先创建一个直角杨辉三角
for(int i=0;i<nums.length;i++) {
for(int j=0;j<=i;j++) {
if(j==0||j==i) {
nums[i][j]=1;
}else {
nums[i][j] = nums[i-1][j-1]+nums[i-1][j];
}
System.out.print(nums[i][j]+" ");
}
System.out.println();
}
//做等腰处理,我们发现等腰杨辉三角就是在直角杨辉三角的基础上加了空格
//且空格的个数也有规律,所以在输出前,输出空格
for(int i=0;i<nums.length;i++) {
for(int k=0;k<nums.length-i-1;k++) {
System.out.print(" ");
}
for(int j=0;j<=i;j++) {
System.out.print(nums[i][j]+" ");
}
System.out.println();
}
}