我以为一维数组就已经天下无敌了,没想到二维数组比他还勇猛,这是谁的部将!?

(阅读本文章前,请各位看官老爷先自行学习一维数组)

一、二维数组定义

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。例如: int[2][2] arr; 

定义!? 谁没事看定义啊!?二维数组怎么用!?搞快点!


二、二维数组的使用


1.快速入门案例

请用二维数组输出下列图形:
1   0   0   0
0   1   0   1
0   0   1   0
0   0   0   1

 好了,通过这个简单案例,各位看官老爷对二维数组有一个认识了吗?

2.使用方式

 动态初始化

 语法: 类型[][] 数组名 = new 类型[大小][大小]

 例如: int[][] arr = new int[2][2]   

好的,接下来看一个例子:

 
 

 通过这段代码打印输出我们在控制台可以看到:

 这里可能会有看官老爷会问 为什么是0啊?

 这是因为我们新建数组的时候并没有给元素赋值,如果我们在创建数组之后执行这段语句:

 至于输出结果,请各位看官老爷屈尊动动手,自己尝试着做一下。

3.二维数组案例

3.1基础运用

题目:获取arr数组中所有元素的和。

i\j j=0 j=1 j=2 j=3
i=0 3 5 8 0
i=1 12 9 0 0
i=2 7 0 6 4
public class Sum {
    public static void main(String[] args) {
        //首先静态初始化二维数组
        int[][] arr = { {3,5,8,0},
                        {12,9,0,0},
                        {7,0,6,4}};
        //定义一个变量sum用于存放每次数组遍历的值
        int sum = 0;
        //遍历二维数组
        for (int i = 0; i <arr.length ; i++) {
            for (int j = 0; j <arr[i].length ; j++) {
                sum+=arr[i][j];
                //这里也可以写为 sum = sum + arr[i][j]
            }
        }//打印sum就能求出数组元素的和
        System.out.println(sum);


    }
}

3.2杨辉三角

题目:打印杨辉三角形(行数可以键盘录入)
    
    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][j] = arr[i-1][j] + arr[i-1][j-1]

找到规律后,我们开始书写代码,进行杨辉三角的打印:

public class YangHui {
    public static void main(String[] args) {
        //调用Scanner函数进行行数的输入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入杨辉三角行数:");
        int hang = sc.nextInt();
        //动态初始化创建二维数组 其中行数设置为我们输入的数字
        int[][] yanghui = new int[hang][];
        for (int i = 0; i <yanghui.length ; i++) { //遍历yanghui的每一个元素
           //给每一个一维数组(行)开辟空间
            yanghui[i] = new int[i+1];
            //给每一个一维数组赋值
            for (int j = 0; j <yanghui[i].length ; j++) {
                //每一行的第一个元素和最后一个元素是1
                if (j == 0 || j == yanghui[i].length - 1){
                    yanghui[i][j] = 1;
                }else {//中间元素
                    yanghui[i][j] = yanghui[i-1][j]+yanghui[i-1][j-1];
                }
            }
        }
        //打印杨辉三角
        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();
        }
    }
}

最后的打印结果:

至此,我们对杨辉三角以及二维数组的分析就全部结束了,还请各位看官老爷动动小手自己试着分析一下。

 

Guess you like

Origin blog.csdn.net/Michelhjx/article/details/120748654