Java-10 二维数组

二维数组:二维数组其实就是一个元素为一维数组的数组

一、定义格式:

    格式1 数据类型[][] 变量名 = new 数据类型[m][n];

public static void main(String[] args) {
        //定义一个二维数组
        int[][] arr = new int[3][2];
        //定义一个二维数组arr
        //3代表的是arr有三个元素,每个元素都是一个一维数组
        //2代表的是每个一维数组有两个元素
        //输出二维数组的名字和元素
        System.out.println(arr); // [[I@4554617c

        //把第一个元素的地址获取到
        System.out.println(arr[0]); //[I@74a14482
        //把第二个元素的地址获取到
        System.out.println(arr[1]); //[I@1540e19d
        //把第三个元素的地址获取到
        System.out.println(arr[2]); //[I@677327b6

        //输出二维数组中第2个一维数组的所有元素
        System.out.println(arr[1][0]);
        System.out.println(arr[1][1]);
//        System.out.println(arr[1][2]);

//        System.out.println(arr[3][0]);

    }

 

    格式2 数据类型[][] 变量名 = new 数据类型[m][];   m表示这个二维数组有多少个一维数组 这一次没有直接给出一维数组的元素个数,可以动态的给出。

public static void main(String[] args) {
        int[][] arr = new int[3][];

        System.out.println(arr[0]); //null
        System.out.println(arr[1]); //null
        System.out.println(arr[2]); //null

        System.out.println("============================");
        //动态地为二维数组中每一个一维数组分配空间
        arr[0] = new int[2];
        arr[1] = new int[3];
        arr[2] = new int[4];

        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);

        //输出二维数组中第2个一维数组的所有元素
        System.out.println(arr[1][0]);// 0
        System.out.println(arr[1][1]);






    }

 

    格式3              数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};

    简化版格式:  数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};

public static void main(String[] args) {
        //定义一个二维数组
        int[][] arr = new int[][]{{11, 22, 33}, {44, 55}, {66, 77, 88, 99}};

//        int[][] arr1 = new int[3][2]{{11, 22}, {44, 55}, {66, 77}};

        System.out.println(arr); //二维数组的地址值
        System.out.println(arr[0]); //二维数组的第一个元素,一维数组的地址值
        System.out.println(arr[1]); //二维数组的第二个元素,一维数组的地址值
        System.out.println(arr[2]); //二维数组的第三个元素,一维数组的地址值

        System.out.println(arr[0][0]); //打印的是第 1 个一维数组中的第 1 个元素值
        System.out.println(arr[0][1]); //打印的是第 1 个一维数组中的第 2 个元素值
        System.out.println(arr[0][2]); //打印的是第 1 个一维数组中的第 3 个元素值

        System.out.println(arr[1][0]); //打印的是第 2 个一维数组中的第 1 个元素值
        System.out.println(arr[1][1]); //打印的是第 2 个一维数组中的第 2 个元素值

        System.out.println(arr[2][0]); //打印的是第 3 个一维数组中的第 1 个元素值
        System.out.println(arr[2][1]); //打印的是第 3 个一维数组中的第 2 个元素值
        System.out.println(arr[2][2]); //打印的是第 3 个一维数组中的第 3 个元素值
        System.out.println(arr[2][3]); //打印的是第 3 个一维数组中的第 4 个元素值

    }

二、二维数组遍历

 int[][] arr1 = new int[][]{{1, 5, 7, 2}, {5, 4, 8, 6}, {4, 5, 878, 4}};
        for (int i = 0; i < arr1.length; i++){
            for (int j =0;j<arr1[i].length;j++){
                System.out.print(arr1[i][j]+"\t");
            }
            System.out.println();
        }

三、二维数组练习题

/*
        杨辉三角(行数是我们手动指定的)
        1           {1}           {{1},{1,1},{1,2,1},{1,3,3,1},...}
        11          {1,1}
        121         {1,2,1}
        1331        {1,3,3,1}
        14641
        15101051
        ...


        分析:
            1、任何一行的第一列和最后一列都是1
            2、从第三行开始,除去首位,每一列的数据是上一行的前一列与上一行的本列之和

        实现步骤:
            1、首先定义一个二维数组,行数是n,列数我们也定义为n
            2、给这个二维数组任何一行的第一列和最后一列赋值1
            3、按照我们发现的规律去给其他元素赋值
                从第三行开始,除去首位,每一列的数据是上一行的前一列与上一行的本列之和
            4、遍历这个二维数组
 */
import java.util.Scanner;
public class ArrayDemo9 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入你想要的杨辉三角的行数:");
        int n = sc.nextInt();
        //{{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}
        int[][] arr = new int[n][n];

        //给这个二维数组任何一行的第一列和最后一列赋值1
        for(int i = 0;i<arr.length;i++){
            arr[i][0] = 1;
            arr[i][i] = 1;
        }

        //按照我们发现的规律去给其他元素赋值
        //从第三行开始,除去首位,每一列的数据是上一行的前一列与上一行的本列之和
        for(int i=2;i<arr.length;i++){
            //注意:到这里我们每一行的第一列和最后一列都赋值1
            //所以,我们只需要处理每一行其他的元素就可以了
            //每一行从第二列开始处理,一直到每一行的倒数第二列
            //也就是索引从1开始到length-2
            for(int j=1;j<arr[i].length-1;j++){
                //每一列的数据是上一行的前一列与上一行的本列之和
                arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
            }
        }

        //遍历这个二维数组
//        for(int i=0;i<arr.length;i++){
//            for(int j=0;j<arr[i].length;j++){
//                System.out.print(arr[i][j]+"\t");
//            }
//            System.out.println();
//        }

        for(int i=0;i<arr.length;i++){
            for(int j=0;j<=i;j++){
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }



    }
}

 

posted @ 2021-09-23 20:08  艺术派大星  阅读(170)  评论(0)    收藏  举报
levels of contents