4.2 二维数组与序列统计
二维数组可以表示表格、矩阵、棋盘或网格。它有行和列两个下标。
java
int[][] grid = {
{1, 2, 3},
{4, 5, 6}
};
System.out.println(grid[1][2]); // 6grid[1][2] 的含义是:先取第 1 行,再在这一行里取第 2 列。两个下标都从 0 开始。
行与列
对于矩形二维数组:
java
int[][] scores = new int[3][4];第一个数字是行数,第二个数字是列数。
java
System.out.println(scores.length); // 3 行
System.out.println(scores[0].length); // 第 0 行有 4 列Java 的二维数组本质上是“数组里的数组”。这意味着每一行都有自己的长度。入门题通常使用矩形数组,但 Java 也可以表示不规则数组:
java
int[][] triangle = {
{1},
{1, 2},
{1, 2, 3}
};在不规则数组中,triangle[0].length、triangle[1].length、triangle[2].length 可以不同。
嵌套循环
矩阵加法可以用嵌套循环完成。外层循环控制行,内层循环控制列。
矩阵加减法要求两个矩阵形状相同。如果 A 和 B 都是 m x n 矩阵,那么结果矩阵也是 m x n。所谓“一一对应”,就是第 i 行第 j 列只和另一个矩阵的第 i 行第 j 列计算。
矩阵一一对应运算
131012+007521=138533
131012-007521=13-6-5-11
java
int[][] a = {
{1, 3},
{1, 0},
{1, 2}
};
int[][] b = {
{0, 0},
{7, 5},
{2, 1}
};
int[][] c = new int[3][2];
System.out.println("矩阵加法");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
c[i][j] = a[i][j] + b[i][j];
System.out.printf("%3d", c[i][j]);
}
System.out.println();
}运行结果:
text
矩阵加法
1 3
8 5
3 3数组统计
统计数组时,常见任务包括求和、平均值、最大值、最小值。
java
int[] scores = {88, 91, 76, 95, 83};
int max = scores[0];
for (int i = 1; i < scores.length; i++) {
if (scores[i] > max) {
max = scores[i];
}
}对于二维数组,先判断统计目标是一行、一列,还是整个表格。
java
int row = 1;
int sum = 0;
for (int col = 0; col < scores[row].length; col++) {
sum += scores[row][col];
}
double average = sum / (double) scores[row].length;正在加载交互实验...
正在加载概念检查...
正在加载本节练习...