10 多维数组

多维数组

1. Why?

如果要求计算一个班的5名同学的成绩和,可以使用一维数组 + 普通循环解决。

而如果是计算三个班的各5名同学的成绩和,一维数组和普通循环实现起来不够好,所以我们才需要学习更高级的概念:多维数组。

2. 概念

多维数组,可以理解为嵌套数组。

二维数组:是以 一维数组 作为 数组元素 的数组,即 “数组的数组”。

多维数组的常见表现形式是二维数组、三维数组,但一般以二维数组居多。

多维数组在Java中,语法是存在的,但内存角度来看的话,只有一维数组。

3. 定义

方式一

// 数据类型[] 数组名 = new 数据类型[容量/长度];
// 存储一个班5名同学的成绩
// 		成绩的数据类型:double
//      数组的容量:5
double[] scores = new double[5];

scores[0] = 90;
scores[1] = 80;
scores[2] = 70;
scores[3] = 60;
scores[4] = 50;
// 数据类型[][] 数组名 = new  数据类型[外维数组的容量][内维数组的容量];
// 存储三个班各5名同学的成绩
//      外维数组:存储的是3个班的成绩
//      内维数组:每个班的5名同学成绩
// 		外维数组的数据类型:double[]
//      内维数组的数据类型:double
double[][] scores = new double[3][5];

// 存储第一个班成绩
scores[0][0] = 90; // 第一个班的第一个学生
scores[0][1] = 80; 
scores[0][2] = 80;
scores[0][3] = 80;
scores[0][4] = 80;
// 存储第二个班成绩
scores[1][0] = 80;
scores[1][1] = 80;
scores[1][2] = 80;
scores[1][3] = 80;
scores[1][4] = 80;
// 存储第三个班成绩
scores[2][0] = 80;
scores[2][1] = 80;
scores[2][2] = 80;
scores[2][3] = 80;
scores[2][4] = 80;

数组也是一种数据类型 ,但是它不是普通的数据类型(int、double),数组存储的是一组相同数据类型的数据。 int[]、double[]。

二维数组:int[][]

三维数组:int[][][]

方式二

直接赋值

// 存储1个班5名同学成绩
double[] scores = {90, 80, 70, 60, 50};
double[] scores = new double[] {90, 80, 70, 60, 50};
// 存储3个班的各2名同学成绩
// 把{}看做是一个一维数组
double[][] scores = {{90, 80}, {80, 80}, {70, 70}};
double[][] scores = new double[][] {{90, 80}, {80, 80}, {70, 70}};

动态赋值

// 定义二维数组,用来存储3个班的各5名同学成绩
double[][] scores = new double[3][5];

Scanner input = new Scanner(System.in);
// 动态录入
// 循环外维数组
for (int i = 0; i < scores.length; i++) {
    System.out.println("开始录入第" + (i+1) +"班的成绩:");
    // 循环内维数组
    for (int j = 0; j < scores[i].length; j++) {
        System.out.print((i+1) + "班的第" + (j+1) + "个学生的成绩是:");
        scores[i][j] = input.nextDouble();
    }
}

System.out.println("第1个班的第2名同学成绩:" + scores[0][1]);

方式三

二维数组,定义时其实只需要指定好一维数组的容量即可。

// 存储3个班的成绩,1班3人,2班2人,3班3人
double[][] scores = new double[3][];
scores[0] = new double[3];
scores[1] = new double[2];
scores[2] = new double[3];

4. 使用

5. Arrays工具类

API:Application Programming Interface 应用程序接口。

Arrays 是 Java 提供的数组操作类,提供了大量的数组操作方法。

它和 Scanner 一样,都是在 java.util 包下的,所以在使用时也需要先 import

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值