二维数组的定义:
二维数组的每一个元素是一个一维数组
例如:int[][] a = {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}};
下面通过代码展示一下二维数组的创建,初始化和遍历
import java.util.Arrays;
public class Array_twoDemo1 {
public static void main(String[] args) {
/**
* 二维数组的声明方式:
* ①int [][] a;
* ②int a2[][];
* 建议使用第一种,方便分清 a 的类型
* 指定长度后创建,会自动对数组进行初始化
* int[][] a = new int[3][3]; // [[0, 0, 0][0, 0, 0][0, 0, 0]]
*/
int[][] a = new int[3][]; // 只确定了二维数组的长度,没有明确的二维数组的长度
System.out.println(Arrays.deepToString(a)); // [null, null, null]
// 动态给一维数组定义长度
a[0] = new int[1];
a[1] = new int[2];
a[2] = new int[3];
System.out.println(Arrays.deepToString(a)); // [[0], [0, 0], [0, 0, 0]]
/**
* 二维数组初始化
*int[][] b = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
*简化后
*/
int[][] b = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
System.out.println(Arrays.deepToString(b)); // [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
/**
* 也可以初始化给二维数组的一维数组不同长度
*/
int[][] c = {{1}, {4, 5}, {7, 8, 9}};
System.out.println(Arrays.deepToString(c)); // [[1], [4, 5], [7, 8, 9]]
// 二维数组的遍历
for (int i = 0; i < c.length; i++) {
// 遍历二维数组中的一维数组
for (int j = 0; j < c[i].length; j++) {
System.out.print(c[i][j] + "\t");
}
}
System.out.println();
}
}
二维数组的使用案例:杨辉三角
代码如下:
import java.util.Scanner;
public class YHsanjiao {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int length = scan.nextInt();
// 定义要打印的杨辉三角长度
int[][] yhSanJiao = new int[length][2 * length - 1];
// 给第一个元素赋值
yhSanJiao[0][yhSanJiao[0].length / 2] = 1;
// 给最后一个元素赋值
yhSanJiao[length - 1][2 * length - 2] = 1;
// 给杨辉三角其他元素赋值
for (int i = 1; i < length; i++) {
for (int j = 1; j < yhSanJiao[i].length - 1; j++) {
yhSanJiao[i][j] = yhSanJiao[i - 1][j - 1] + yhSanJiao[i - 1][j + 1];
}
}
// 打印杨辉三角
for (int i = 0; i < length; i++) {
for (int j = 0; j < yhSanJiao[i].length; j++) {
if (yhSanJiao[i][j] == 0) {
System.out.print(" ");
} else {
System.out.printf("%-6d", yhSanJiao[i][j]);
}
}
System.out.println();
}
}
}
该程序可以从控制台接收一个数字,打印对应行数的杨辉三角
运行结果如下: