多维数组
在程序中可以通过一个数组来保存某个班级学生的考试成绩,试想一下,如果要统计一个学校各个班级学生的考试成绩,又该如何实现呢?这时就需要用到多维数组,多维数组可以简单地理解为在数组中嵌套数组。在程序中,比较常见的多维数组是二维数组,接下来本小节将针对二维数组进行详细地讲解。
二维数组可以被看作是特殊的一维数组,其定义有很多方式,接下来针对几种常见的方式进行详细地讲解,具体如下:
第一种方式,指定二维数组的长度和每个数组的元素个数,其基本语法格式如下:
int[][] arr = new int[3][4];
上面的代码相当于定义了一个34的二维数组,这个二维数组的长度为3,我们可以将它看成3个int[]类型的一维数组,每个一维数组中的元素又是一个长度为4的一维数组。接下来通过一个图来表示这种情况,如图1所示。
图1 二维数组
第二种方式,只指定二维数组的长度,不确定每个数组的元素个数,其基本语法格式如下:
int[][] arr = new int[3][];
第二种方式和第一种类似,只是数组中每个元素的长度不确定,接下来通过一个图来表示这种情况,如图2所示。
图2 二维数组
第三种方式,直接使用嵌套大括号“{}”,对二维数组初始化赋值,其基本语法格式如下:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
上面的二维数组中定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9},接下来通过一个图来表示这种情况,如图3所示。
图3 二维数组
对二维数组中元素的操作也是通过角标的方式来完成的,具体示例代码如下:
arr[0][1]; // 获取二维数组中第一个元素组的第二个元素
arr[0][1]=1; // 对二维数组中第一个元素组的第二个元素赋值或修改
接下来通过一个统计公司三个销售小组中每个小组的总销售额,以及整个公司销售额的案例来熟悉二维数组的使用,如文件1所示。
文件1 Example25.java
1 public class Example25 {
2 public static void main(String[] args) {
3 int[][] arr = new int[3][]; // 定义一个长度为3的二维数组
4 arr[0] = new int[] { 11, 12 }; // 为数组的元素赋值
5 arr[1] = new int[] { 21, 22, 23 };
6 arr[2] = new int[] { 31, 32, 33, 34 };
7 int sum = 0; // 定义变量记录总销售额
8 for (int i = 0; i < arr.length; i++) { // 遍历数组元素
9 int groupSum = 0; // 定义变量记录小组销售总额
10 for (int j = 0; j < arr[i].length; j++) {
11 groupSum += arr[i][j];
12 }
13 sum +=groupSum; // 累加小组销售额
14 System.out.println("第" + (i + 1) + "小组销售额为:"
15 + groupSum + " 万元。");
16 }
17 System.out.println("总销售额为: " + sum + " 万元。");
18 }
19 }
运行结果如图4所示。
图4 运行结果
文件1中,第3行代码定义了一个长度为3的二维数组,并在4~6行代码中为数组的每个元素赋值。文件中还定义了两个变量sum和groupSum,其中sum用来记录公司的总销售额,groupSum用来记录每个销售小组的销售额。当通过嵌套for循环统计销售额时,外层循环对三个销售小组进行遍历,内层循环对每个小组员工的销售额进行遍历,内层循环每循环一次就相当于将一个小组员工的销售总额统计完毕,赋值给groupSum,然后把groupSum的值与sum的值相加赋值给sum。当外层循环结束时,三个销售小组的销售总额groupSum都累加到sum中,即统计出了整个公司的销售总额。