二维数组:
是一维数组的嵌套,数组里面的元素是一个一维的数组
语法结构:
声明一个二维数组:
数组类型[][] 数组名;
例:声明一个int型的数组和String类型的数组
int[][] nums;
String[][] strs;
分配空间(告诉这个数组里有多少个元素):
数组名=new 数组类型[数组长度][数组长度];或者 数组名= new 数组类型[数组长度][];
注意:二维数组分配空间的时候,第一个数组的长度必须要写,第二个数组的长度可以写可不写,如果写了就代表这个二维数组的元素(一维数组)长度一样,如果不写则认为这些二维数组元素(一维数组)长度不一样
例:给nums划分一个为3*5的数组
nums=new int[3][5];
赋值:数组名[下标][下标]=数据;
例:给nums数组中下标为0的元素赋值为9
nums[0][0]=9;
nums[0][1]=9;
nums[0][2]=9;
nums[0][3]=9;
操作数据:数组名[下标][下标];
二维数组的声明,分配空间合并写
数据类型[][] 数据名=new 数据类型[数据长度][数据长度];
或者 数据类型[][] 数据名=new 数据类型[数据长度][];
注意:二维数组分配空间的时候,第一个数组的长度必须要写,第二个数组的长度可以写可不写,如果写了就代表这个二维数组的元素(一维数组)长度一样,如果不写则认为这些二维数组元素(一维数组)长度不一样
例:
int[][] nums = new int[3][5];
int[][] nums = new int[3][];
二维数组的声明,分配空间,赋值合并写
数据类型[][] 数据名 = new 数据类型[][]{{数据1,数据2,.....},{数据1,数据2,.....},{数据1,数据2,.....},.....};
int [][] nums = new int[][]{{数据1,数据2,......},{数据1,数据2,.....},{数据1,数据2,.....},{数据1,数据2,.....}};
例:char[][] ch1=new char[][]{{'a'},{'a','b'},{'a','d'},{'a','b','c'}};
二维数组的声明,分配空间,赋值合并写简写
数据类型[][] 数据名 = {{数据1,数据2,.....},{数据1,数据2,.....},{数据1,数据2,.....},.....};
// 遍历二位数组
int[][] nums={{1,2,3},{4,5},{7,8,9,0},{22}};
for (int i = 0; i < nums.length; i++) {
//利用外循环来来对二维数组中的每一个元素(一维数组)进行循环
for (int j = 0; j < nums[i].length; j++) {
//用内循环来对一维数组的元素进行循环(nums[i].length是一维数组的长度)
System.out.print(nums[i][j]+" ");
}
System.out.println();
}
int[][][] nums = {{{1,2,3},{4,5}},{{11,22,33,44},{66,77},{999,888,777,66,55}}};
//遍历三维数组
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums[i].length; j++) {
for (int j2 = 0; j2 < nums[i][j].length; j2++) {
System.out.println(nums[i][j][j2]);
}
}
}
经典案例:已知有3个班级各5名学员,请使 二维数组计算各个班级的总成绩
//已知有3个班级各5名学员,请使 二维数组计算各个班级的总成绩
//创建一个二维数组为三行五列的数组
double[][] score = new double [3][5];
//获取每个班级的成绩创建Scanner类
Scanner sc= new Scanner(System.in);
//外循环控制班级的变化
for(int i = 0;i<score.length;i++){
System.out.println("-------"+(i+1)+"班级的成绩-------");
for (int j = 0; j < score[i].length; j++) {
//内循环控制输入班级每个人的成绩
System.out.print("请输入第"+(j+1)+"个同学的成绩:");
score[i][j]=sc.nextDouble();
}
}
System.out.println("-------成绩--------");
for (int i = 0; i < score.length; i++) {
int sum=0;//定义一个存储总成绩的变量(因为要输出每个班级的总成绩所以这个定义在外循环里,是每一次循环它的值是0 )
for (int j = 0; j < score[i].length; j++) {
sum+=score[i][j];
//每次循环过后进行累加
}
System.out.println("第"+(i+1)+"个班级的总成绩"+sum);
}