Java中的二维数组

一、介绍

应用场景:比如我们要开发一个五子棋游戏,期盼就是需要用二维数组来表示。即一维数组的每一个元素也是数组。

例子:请用二维数组输出如下图形:
000000
001000
020300
000000
package com.hspedu.array;

public class TwoDimensionalArray {
    public static void main(String[] args) {
        /*
        请用二维数组输出如下图形:
        000000
        001000
        020300
        000000
         */

        /*
        什么是二维数组?
        1.从定义形式上看 int[][]
        2.原来的一维数组的每个元素都是一堆数组,就构成二维数组。
          因此如果要得到每个一维数组的值,还需要再次遍历
        3.如果要访问第(i+1)个一维数组的j+1个值,用 arr[i][j]
         */
        int[][] arr = {{0,0,0,0,0,0},{0,0,1,0,0,0},
                        {0,2,0,3,0,0},{0,0,0,0,0,0}};

        //输出二维图形
        //1.arr[i].length得到对应的每个一维数组的长度
        for (int i = 0; i < arr.length; i++){  //这里的arr.length是4,代表的是一维数组的长度
            for (int j = 0; j < arr[i].length; j++){
                System.out.print(arr[i][j] + " ");  //输出了一维数组
            }
            System.out.println();
        }
    }
}

二、定义

1、动态初始化1

  • 语法:类型[][] 数组名 = new 类型[二维数组大小][每个一维数组大小]
  • 比如:int a[][] = new int[2][3]

重点:二维数组在内存中的存在形式。(真正存放数据的地方是最右边的0x0022和0x0033)

 2、动态初始化2

  1.  先声明:类型 数组名[][];
  2. 再定义(开辟空间):数组名 = new 类型[大小][大小]
  3. 赋值(有默认值,比如int 类型的就是0)
public class TwoDimensionalArray02 {
    public static void main(String[] args) {
        int arr[][];  //声明二维数组
        arr = new int[2][3];  //再开辟空间
    }
}

3、动态初始化--->列数不确定

 下面是实现的代码:

package com.hspedu.array;
/*
动态创建下面的数组,并输出
i = 0: 1
i = 1: 2 2
i = 2: 3 3 3
 */
public class TwoDimensioanlArray03 {
    public static void main(String[] args) {
        int[][] arr = new int[3][];  //只是创建了二维数组,一共有3个一维数组,但是每个一维数组还没有开辟数据空间
        for (int i = 0; i < arr.length; i++){  //遍历arr每个一维数组
            //给每一个一维数组开空间
            arr[i] = new int[i+1];
            //遍历一维数组,并给一维数组的每个元素赋值
            for (int j = 0; j < arr[i].length; j++){
                arr[i][j] = i+1;
            }
        }

        //遍历arr输出
        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();
        }
    }
}

4、静态初始化

语法:类型 数组名[][] = {{值1,值2..},{值1,值2..},{值1,值2..}}

三、练习题

1、要求:int arr[][] = {{4,6},{1,4,5,7},{-2}};  //遍历该二维数组,并得到和

package com.hspedu.array;

public class TwoDimensionalArray05 {
    public static void main(String[] args) {
        //要求:int arr[][] = {{4,6},{1,4,5,7},{-2}};
        // 遍历该二维数组,并得到和
        int sum = 0;
        int arr[][] = {{4,6},{1,4,5,7},{-2}};
        for (int i = 0; i < arr.length; i++){
            for (int j = 0; j < arr[i].length; j++){
                sum = sum + arr[i][j];
            }
        }
        System.out.println("sum= " + sum);
    }
}

四、杨辉三角

package com.hspedu.array;
/*
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

规律:
1.第一行有1个元素,第n行有n个元素
2.每一行的第一个元素和最后一个元素都是1
3.从第三行开始,除了第一个元素和最后一个元素,其余的都是:
    arr[i][j] = arr[i-1][j-1] + arr[i-1][j]
 */
public class YangHui {
    public static void main(String[] args) {
        int[][] yangHui = new int[6][];
        for (int i = 0; i < yangHui.length; i++){  //遍历yangHui的每个元素
            //给每个一维数组开辟空间
            yangHui[i] = new int[i+1];
            //给每一个一维数组赋值
            for (int j = 0; j < yangHui[i].length; j++){
                if (j == 0 || j == yangHui[i].length-1){
                    yangHui[i][j] = 1;
                }else {
                    yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
                }
            }
        }
        //输出杨辉三角
        for (int i = 0; i < yangHui.length; i++){
            for (int j = 0; j < yangHui[i].length; j++){
                System.out.print(yangHui[i][j] + " ");
            }
            System.out.println();
        }
    }
}

 五、二维数组使用细节和注意事项

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m1m-FG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值