第八章 多维数组

第八章 多维数组

8.1 引言

表或矩阵中的数据可以表示为二维数组。

二维数组是将其他数组(一维)作为其元素的数组。

8.2 二维数组基础

通过行和列的下标来访问二维数组中的元素。

8.2.1 声明二维数组变量并创建二维教组

以下是声明二维数组的语法:

elementType[][] = arrayRefVar

在 Java中,每个下标必须放在一对方括号中。

8.2.2 获取二维数组的长度

二维数组实际上是一个其中每个元素都是一个一维数组的数组。数组x的长度是数组中元素的个数,可以用x.length获取该值。

8.2.3 不规则数组

二维数组中的每一行本身就是一个数组,因此,各行的长度就可以不同。这样的数组称为不规则数组(ragged array)。

注意:使用语法new int[5][]创建数组时,必须指定第一个下标。语法new int[][]是错误的。

8.3 处理二维数组

嵌套的for循环常用于处理二维数组。

8.4 将二维数组传递给方法

将一个二维数组传递给方法时,数组的引用传递给了方法。

8.5 示例学习:给多选题测验评分

需求:编写一个程序,对多选题测验进行评分。假设这里有8个学生和10道题目,学生的答案存储在一个二维数组中。每一行记录一名学生对所有题目的答案,如下面数组所示:

请添加图片描述

正确答案存储在一个一维数组中:

请添加图片描述

程序给测验评分并显示结果。它将每个学生的答案与正确答案进行比较,统计正确案的个数,并将其显示出来。

思路:

​ 1.将学生的答案存储在二维矩阵中

​ 2.将正确答案序列存储在数组中

​ 3.遍历每个学生的答案与正确答案进行匹配,统计正确数量

​ 4.输入每个学生的对应结果

具体实现:

package com.Javabook.Demo;

public class P263_GradeExam {
    public static void main(String[] args) {
        //8名学生答案
        char[][] answers = {
                {'A','B','A','C','C','D','E','E','A','D'},
                {'D','B','A','B','C','A','E','E','A','D'},
                {'E','D','D','A','C','B','E','E','A','D'},
                {'C','B','A','E','D','C','E','E','A','D'},
                {'A','B','D','C','C','D','E','E','A','D'},
                {'B','B','E','C','C','D','E','E','A','D'},
                {'B','B','A','C','C','D','E','E','A','D'},
                {'E','B','E','C','C','D','E','E','A','D'}};

        //正确答案
        char[] keys = {'D','B','D','C','C','D','A','E','A','D'};

        for (int i = 0; i < answers.length; i++) {
            //单个学生的正确答案数量统计
            int correctCount = 0;
            for (int j = 0; j < answers[i].length; j++) {
                if (answers[i][j] == keys[j]) {
                    correctCount++;
                }
            }

            System.out.println("学生" + i + "的正确答案数量为" + correctCount + "/10");
        }
    }
}

8.8 多维数组

二维数组由一个一维数组的数组组成,而一个三维数组可以认为是由一个二
维数组的数组所组成。

在Java中,可以创建n维数组,其中n是任意正整数。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值