目录
前言
二维数组
使用原因
定义二维数组
访问数组元素
实例
前言
上一篇,我简单的复习了一维数组,本篇讲述二维数组的基本知识,帮助大家预习和复习。
二维数组
使用原因
本质原因:一维数组,已经无法满足解决实际问题的需要
例如:要统计一个学校各个班级学生的考试成绩,既要标示班级,又要标示学生成绩,如果使用一维数组的话,一个数组,只能表示一个。因此当真正解决这项问题时,需要同时创建两个一维数组分别表示对应的目标,最后同时输出。但这样的写法是,比较繁琐的,为了使你编写的代码简洁,所以才有了二维数组。
定义二维数组
格式 1(已经确定好,行数和列数)
数据类型 [ ] [ ] 数组名=new 数据类型 [ 行数] [ 列数 ] ;
实例
int [ ] [ ] xx=new int [3 ] [4 ];
理解:上面代码,表示3*4 的二维数组,即3行4列的二维数组。其中 xx[0] ,xx[1],xx[2] 度可以理解成一个一维数组。
格式 2 (确定行数,但不确定列数)
数据类型 [ ] [ ]数组名 =new 数据类型 [ 行数 ] [ ] ;
实例
int [ ] [ ] xx =new int [3 ] [ ];
注意:行数一定不能省略, 列数根据实际需要判断是否需要。
格式 3 (确定元素值)
数据类型 [ ] [ ]数组名 = { {第1行初始值} ,{第2行初始值}, {第3行初始值},......{第n行初始值} } ;
实例
int [ ] [ ]xx= { {1,2} ,{3,4,5,6}, {7,8,9} } ;
访问数组元素
我们知道二维数组,就相当于走楼梯。
大家小时候,在楼梯上玩,有时,有人会问你:你现在什么位置?你可能会说,我在3 楼 第四个阶梯(假设6层楼,每层楼有8个阶梯)。那么如果用二维数组应该怎么表示,我处在的楼梯位置呢
思路
首先创建一个二维数组表示 一栋楼的楼数和阶梯数。
int [ ] [ ] address= new int [ 3] [8] ;
其次 表示你所在的位置----我在3 楼 第四个阶梯
address [3] [4 ] 这就是我们所在的位置。
实例
问题:统计 一个 公司 3 个 销售小组中每一个小组的销售额 以及整个公司的总销售额
第1 个小组 : 11,12 。
第2个小组 : 21,22,23 。
第3个小组 : 31,32,33,34 。
思路
最终目的:得到小组的销售额和总销售额
1 总销售额=所有小组销售额相加 ,并且小组销售,每一个小组成员销售相加
2 发现使用二维数组表示最为方便的(本题中,我们不仅要表示小组之间的关系还要表示小组内部的关系,需要使用到二维数组。如果使用一维数组的话,需要同时创建两个数组才行,过程比较繁琐)
3 使用循环嵌套,内层循环表示每一个小组销售总额,外层循环表示小组相加的最终销售总额。
代码如下
public class Example2 { public static void main(String[] args) { int [] [] arr=new int[3][]; arr[0]=new int[]{11,12}; arr[1]=new int[]{21,22,23}; arr[2]=new int[]{31,32,33,34}; int sum=0;//总销售额 int groupsum=0;//小组销售额 for(int i=0;i<arr.length;i++){ for(int j=0;j<arr[i].length;j++){ groupsum+=arr[i][j]; } sum+=groupsum; System.out.println("小组销售"+groupsum); groupsum=0; } System.out.println("总销售额="+sum); } }当你写完,你发现,小组销售额groupsum 只要在外层循环写一遍,就可以了。没必要在for循环外设置为全局变量。
修改后:
public class Example2 { public static void main(String[] args) { int [] [] arr=new int[3][]; arr[0]=new int[]{11,12}; arr[1]=new int[]{21,22,23}; arr[2]=new int[]{31,32,33,34}; int sum=0;//总销售额 for(int i=0;i<arr.length;i++){ int groupsum=0;//小组销售额 for(int j=0;j<arr[i].length;j++){ groupsum+=arr[i][j]; } sum+=groupsum; System.out.println("小组销售"+groupsum); // groupsum=0; } System.out.println("总销售额="+sum); } }