二维数组

    一维数组是代表一组数组;多组数据时,就需要用到二维数组。
例如:保存一个小组的学员成绩,用一维数组;保存全班10个小组的学员成绩,而且是每个小组   分开存储,用二维数组。

声明二维数组语法格式:
         元素的类型[][] 数组名;         例如:int[][] scores;

声明数组确定:(1)数据的类型(2)数组名(3)维度

初始化:
初始化的目标:(1)数组的行数(2)每一行的元素个数,也称为列数(3)元素的值
二维数组有点像表格,只是它这个表格的每一行的列数不一定一样。

二维数组的行数/长度: 二维数组名.length
 二维数组的其中一个元素: 二维数组名[行下标][列下标]
 二维数组某一行的长度: 二维数组名[行下标].length
二维数组下标范围:
      行下标的范围: [0,  数组名.length-1]
      列下标的范围: [0,   数组名[行下标].length-1]

初始化的方式:
静态初始化
    语法格式:
        数组名 = new 元素的数据类型[][]{{第一行的数据列表}, {第二行的数据列表}, ...};

     当声明和静态初始化在一句完成的话,可以简写:
        元素的类型[][] 数组名 = {{第一行的数据列表}, {第二行的数据列表}, ...};

动态初始化
(1)规则矩阵:每一行的列数是一样的
(2)不规则矩阵:每一行的列数是不一定相同

    步骤:
    第一步:先确定行数
        二维数组名 = new 元素的数据类型[行数][];
    第二步:分别确定每一行的列数及其元素
        二维数组名[行下标] = new 元素的数据类型[该行的列数];

错误:NullPointerException空指针异常  

public class TestArray{
    public static void main(String[] args) {
        //有3个小组的学员成绩,每一个小组的人数不一样的
        // 第一步:先确定行数
        int[][] scores = new int[3][]; //注意,第二个[]中不能填数据

        System.out.println("行数:" + scores.length) ;//行数:3
//        System.out.println("第一行的列数:" + scores[0].length) ; //NullPointerException空指针异常
        
        //第二步:分别确定每一行的列数及其元素
        //确定第1行的列数,
        //scores[0]代表第一行, 右边的new int[4]代表第一行的长度/列数是4,它能存储4个int整数,
        //                   此时把scores[0]看成一个一维数组,并且scores[0]是数组名
        scores[0] = new int[4]; //JVM就会给他分配4个int类型的对应空间
        //确定第2行的列数,
        scores[1] = new int[3];
        //确定第3行的列数,
        scores[2] = new int[5];

        //第三步:给某个元素赋值,如果没有这一步,元素都是默认值
        scores[0][0] = 89;
        scores[2][2] = 100;

        //显示元素的值
        for (int i = 0; i < scores.length; i++) {
            for (int j = 0; j < scores[i].length; j++) {
                System.out.print(scores[i][j] + " ");
            }
            System.out.println();
        }
    }
}

二维数组的遍历

public class TestIterate {
    public static void main(String[] args) {
        int[][] scores = {
                {89,75,86,45,75},   //第1行的数据
                {52,75,88,96,99,100,74},     //第2行的数据
                {77,88,99}               //第3行的数据
        };

        //遍历二维数组
        //用到循环嵌套,双重循环
        //外循环,遍历行,内循环,遍历每一行的多个元素,即列
        //scores.length这里就是3,代表3行
        for(int i=0; i<scores.length; i++){
            //scores[i] 代表一行
            //scores[0] 代表第1行  {89,75,86,45,75}             scores[0].length是5
            //scores[1] 代表第2行  {52,75,88,96,99,100,74}      scores[1].length是7
            //scores[2] 代表第3行 {77,88,99}                    scores[2].length是3
            for(int j=0; j<scores[i].length; j++){
                System.out.print(scores[i][j]+" ");//这里没有换行,为了使得一行的数据打印在一行上面
            }
            //内循环是打印一行中的所有元素
            System.out.println();//换行
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值