4.4 二维数组
二维数组的定义格式:
第一种方式:
int[][] arr = new int[3][4];
上面的代码相当于定义了一个3*4的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组,接下来通过一个图来表示这种情况,如下图所示。
第二种方式:
int[][] arr = new int[3][];
第二种方式和第一种类似,只是数组中每个元素的长度不确定,接下来通过一个图来表示这种情况,如下图所示。
第三种方式:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
上面的二维数组中定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9},接下来通过一个图来表示这种情况,如图2-54所示。
对二维数组中元素的访问也是通过角标的方式,如需访问二维数组中第一个元素数组的第二个元素,具体代码如下:
arr[0][1];
二维数组的访问:
实例代码:
class ArrayDemo08 {
publicstatic void main(String[] args){
//定义二维数组的方式
int[][]arr = new int[3][4];
System.out.println(arr );
System.out.println("二维数组的长度: " + arr.length);
//获取二维数组的3个元素
System.out.println(arr[0] );
System.out.println(arr[1] );
System.out.println(arr[2] );
System.out.println("打印第一个一维数组的元素值");
System.out.println(arr[0][0] );
System.out.println(arr[0][1] );//访问的为二维数组中第1个一维数组的第2个元素
System.out.println(arr[0][2] );
System.out.println(arr[0][3] );
System.out.println("打印第二个一维数组的元素值");
System.out.println(arr[1][0] );
System.out.println(arr[1][1] );
System.out.println(arr[1][2] );
System.out.println(arr[1][3] );
System.out.println("打印第三个一维数组的元素值");
System.out.println(arr[2][0] );
System.out.println(arr[2][1] );
System.out.println(arr[2][2] );
System.out.println(arr[2][3] );
}
}
二维数组元素遍历与累加:
实例代码:
class ArrayDemo09 {
publicstatic void main(String[] args){
//一维数组的求累加和并遍历
int[]arr = {10,20,30,40,50};
int sum = 0;
for(int i=0; i<arr.length; i++) {
//System.out.println(arr[i]);
sum+= arr[i];
}
System.out.println("sum=" + sum);
System.out.println("---------------------");
//二维数组的求累加和并遍历
int[][]arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };
intsum2 = 0;
for(int i=0; i<arr2.length; i++) {
for(int j=0; j<arr2[i].length; j++) {
//System.out.println(arr2[i][j])
sum2+= arr2[i][j];
}
}
System.out.println("sum2="+ sum2);
}
}
练习:
例如要统计一个公司三个销售小组中每个小组的总销售额以及整个公司的销售额。如下所示
l 第一小组销售额为{11, 12}万元
l 第二小组销售额为{21, 22, 23}万元
l 第三小组销售额为{31, 32, 33, 34}万元。
实例代码:1 public class ArrayDemo10 {
2 public static voidmain(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
8 int sum =0; // 定义变量记录总销售额
9 for (int i = 0; i < arr.length;i++) { // 遍历数组元素
10 int groupSum =0; // 定义变量记录小组销售总额
11 for (int j = 0; j < arr[i].length; j++) { // 遍历小组内每个人的销售额
12 groupSum = groupSum + arr[i][j];
13 }
14 sum = sum + groupSum; // 累加小组销售额
15 System.out.println("第" + (i + 1) + "小组销售额为:" + groupSum + " 万元");
16 }
17 System.out.println("总销售额为: " + sum + " 万元");
18 }
19 }
运行结果:
在上述代码中,第3行代码定义了一个长度为3的二维数组,并在4~6行代码中为数组的每个元素赋值。例程中还定义了两个变量sum和groupSum,其中sum用来记录公司的总销售额,groupSum用来记录每个销售小组的销售额。当通过嵌套for循环统计销售额时,外层循环对三个销售小组进行遍历,内层循环对每个小组员工的销售额进行遍历,内层循环每循环一次就相当于将一个小组员工的销售总额统计完毕,赋值给groupSum,然后把groupSum的值与sum的值相加赋值给sum。当外层循环结束时,三个销售小组的销售总额groupSum都累加到sum中,即统计出了整个公司的销售总额。