Java基础教程——二维数组

时间:2021-11-08 15:45:30

二维数组

Java里的二维数组其实是数组的数组,即每个数组元素都是一个数组。

每个数组的长度不要求一致,但最好一致。

		// 同样有两种风格的定义方法
int[][] _arr21_推荐 = { { 1, 2 }, { 3 } };
int arr22[][] = { { 1, 2 }, { 3 } };
// 另外还有一种刁钻的写法,据说在面试题中出现过
int[] arr23[] = { { 1, 2 }, { 3 } };

二维数组的初始化:

		int[][] _arr21 = { { 1, 2 }, { 3, 4 } };
// 不赋初始值,只是定义数组的大小
int[][] _arr22 = new int[2][3];
// 第二维度可以省略;第一维度告诉编译器有多少个数组,不能省
int[][] _arr23 = new int[2][];

例:表格数据输出

模拟豆瓣评分 《霸王别姬》 《阿甘正传》 《大话西游》
Andy 9.5 9.4 9.1
Bob 3 8.7 9
Cat 3 7 1
Dog 9.9 3 3
public class 二维数组 {
public static void main(String[] args) {
double[][] films = { { 9.5, 9.4, 9.1 }, { 3, 8.7, 9 }, { 3, 7, 1 }, { 9.9, 3, 3 } };
// 二维数组的遍历
System.out.println("###使用传统for循环###");
for (int i = 0; i < films.length; i++) {
for (int j = 0; j < films[i].length; j++) {
System.out.print(films[i][j] + "\t");
}
System.out.println();
}
System.out.println("###使用foreach语法###");
for (double[] ds : films) {
for (double d : ds) {
System.out.print(d + "\t");
}
System.out.println();
}
}
}

想想,是否还有更简单的输出方案?你至少有两种方案要说。


练习题:

判断一个3*3的矩阵是不是单位矩阵“Unit Matrix”(对角线上元素是1,其余元素是0)

1 0 0
0 1 0
0 0 1
public class 单位矩阵 {
public static void main(String[] args) {
int[][] m = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } };
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[i].length; j++) {
if ((i == j && m[i][j] == 1)) {
// 1.对角线上元素是1
} else if (i != j && m[i][j] == 0) {
// 2.非对角线上元素是0
} else {
// 3.以上都不满足
System.out.println("不是单位矩阵");
return;
}
}
}
System.out.println("是单位矩阵");
}
}