第八章 多维数组
8.1 引言
表或矩阵中的数据可以表示为二维数组。
二维数组是将其他数组(一维)作为其元素的数组。
8.2 二维数组基础
通过行和列的下标来访问二维数组中的元素。
8.2.1 声明二维数组变量并创建二维教组
以下是声明二维数组的语法:
elementType[][] = arrayRefVar
在 Java中,每个下标必须放在一对方括号中。
8.2.2 获取二维数组的长度
二维数组实际上是一个其中每个元素都是一个一维数组的数组。数组x的长度是数组中元素的个数,可以用x.length获取该值。
8.2.3 不规则数组
二维数组中的每一行本身就是一个数组,因此,各行的长度就可以不同。这样的数组称为不规则数组(ragged array)。
注意:使用语法new int[5][]
创建数组时,必须指定第一个下标。语法new int[][]
是错误的。
8.3 处理二维数组
嵌套的for循环常用于处理二维数组。
8.4 将二维数组传递给方法
将一个二维数组传递给方法时,数组的引用传递给了方法。
8.5 示例学习:给多选题测验评分
需求:编写一个程序,对多选题测验进行评分。假设这里有8个学生和10道题目,学生的答案存储在一个二维数组中。每一行记录一名学生对所有题目的答案,如下面数组所示:
正确答案存储在一个一维数组中:
程序给测验评分并显示结果。它将每个学生的答案与正确答案进行比较,统计正确案的个数,并将其显示出来。
思路:
1.将学生的答案存储在二维矩阵中
2.将正确答案序列存储在数组中
3.遍历每个学生的答案与正确答案进行匹配,统计正确数量
4.输入每个学生的对应结果
具体实现:
package com.Javabook.Demo;
public class P263_GradeExam {
public static void main(String[] args) {
//8名学生答案
char[][] answers = {
{'A','B','A','C','C','D','E','E','A','D'},
{'D','B','A','B','C','A','E','E','A','D'},
{'E','D','D','A','C','B','E','E','A','D'},
{'C','B','A','E','D','C','E','E','A','D'},
{'A','B','D','C','C','D','E','E','A','D'},
{'B','B','E','C','C','D','E','E','A','D'},
{'B','B','A','C','C','D','E','E','A','D'},
{'E','B','E','C','C','D','E','E','A','D'}};
//正确答案
char[] keys = {'D','B','D','C','C','D','A','E','A','D'};
for (int i = 0; i < answers.length; i++) {
//单个学生的正确答案数量统计
int correctCount = 0;
for (int j = 0; j < answers[i].length; j++) {
if (answers[i][j] == keys[j]) {
correctCount++;
}
}
System.out.println("学生" + i + "的正确答案数量为" + correctCount + "/10");
}
}
}
8.8 多维数组
二维数组由一个一维数组的数组组成,而一个三维数组可以认为是由一个二
维数组的数组所组成。
在Java中,可以创建n维数组,其中n是任意正整数。