3 二维数组
3.1 二维数组概述:
像我们在高中学校有很多个高三年级有很多的同学。所以我们可以用数组来存储,而我们又同时有很多个高三年级的班,这个也应该用一个数组来存储。如何来表示这样的数据昵?Java就提供了二维数组供我们使用。由此可见:其实二维数组就是一个元素为一维数组的数组。
3.2 二维数组格式:
定义格式:
数据类型[][] 数组名;
数据类型 数组名[][];(不推荐)
数据类型[] 数组名[];(不推荐)
初始化方式
数据类型[][] 数组名 = new 数据类型[m][n];
数据类型[][] 数组名 = new 数据类型[][]{{元素...},{元素...},{元素...}...};
简化版格式:数据类型[][] 数组名 = {{元素...},{元素...},{元素...}};
案例一:
package com.lyc.test; public class ArrayDemo01 { public static void main(String[] args) { // 数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...}; int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}; //打印数组名 System.out.println(arr);//[[I@15db9742 System.out.println(arr.length);//数组长度为 3 System.out.println(arr[0].length);//数组元素一下的数组长度为3 //如何获取一个二维数组的元素? System.out.println(arr[0][0]);//1 System.out.println(arr[1][1]);//5 System.out.println(arr[2][0]);//7 } }
3.3 二维数组的遍历
遍历思想:首先使用循环遍历出二维数组中存储的每个一维数组,然后针对每个遍历到的一维数组在使用循环遍历该一维数组中的元素。
案例二:
package com.lyc.test; public class ArrayDemo02 { public static void main(String[] args) { // 数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...}; int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j]+" "); } System.out.println(); } } }
结果:
案例三:循环输入三名同学的三门成绩
package com.lyc.test; import java.util.Scanner; public class ArrayDemo03 { public static void main(String[] args) { int[][] scores = new int[3][3]; Scanner sc = new Scanner(System.in); String[] names = { "花花", "鱼鱼", "乐乐" }; int[] sum = new int[3]; double[] avg = new double[3]; for (int i = 0; i < scores.length; i++) {//控制人数 for (int j = 0; j < scores[i].length; j++) {//控制科目成绩 System.out.print("请输入"+names[i]+"同学的第"+(j+1)+"门成绩:"); scores[i][j] = sc.nextInt(); sum[i] = sum[i] + scores[i][j]; } avg[i] = (double)sum[i]/avg.length; } System.out.println("姓名 语文 数学 英语 总分 平均分"); for (int i = 0; i < scores.length; i++) { System.out.print(names[i]+" "); for (int j = 0; j < scores[i].length; j++) { System.out.print(scores[i][j]+" "); } System.out.println(sum[i]+" "+avg[i]); } } }
结果: