zoukankan      html  css  js  c++  java
  • Java基础——二维数组

    二维数组

    一、二维数组的初始化格式

    二维数组的实质就是一维数组的数组

    1、格式一

    数据类型[][]  变量名  =  new 数据类型[m][n]
    int[][] arr = new int[2][2];
    

    m代表二维数组中一维数组的个数

    n代表二维数组中所包含每一维数组所能包含的元素个数

    2、格式二

    数据类型[][] 变量名 = new 数据类型[m][];
    int[][] arr = new int[2][];
    arr[0] = new int[1];
    arr[1] = new int[2];
    arr[2] = new int[3];
    
    注意:这种方式从存储角度讲更加灵活!
    
    
    

    m表示这个二维数组有多少个一维数组
    这一次没有直接给出一维数组的元素个数,可以动态的给出。

    3、格式三

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

    二、二维数组的遍历

    public class TwoDimensionDemo1 {
    
      public static void main(String[] args) {
        //数据类型[][] 变量名 = new 数据类型[m][n];
    
        //int[][] a = new int[2][2];
        //System.out.println(a); //[[ 二维数组 I 整数类型 @ 4554617c二维数组的首地址
        //
        //System.out.println(a[0]); //[I@ 74a14482
        //
        ////访问二维数组中的元素
        //System.out.println(a[0][1]);
        //
        ////给二维数组中的变量赋值
        //a[0][1] = 100;
        //System.out.println(a[0][1]);
    
    
        //二维数组的初始化格式2
        //数据类型[][] 变量名 = new 数据类型[m][];
        //int[][] arr = new int[2][];
        //System.out.println(arr[0].length);
        //arr[0] = new int[1];
        //arr[1] = new int[2];
    
        //二维数组的访问同上
    
        //二维数组初始化格式3
        // 数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
    
        int[][] c = new int[][]{{1, 2},{3},{4, 5, 6}};
        //System.out.println(c[0][1]);
        printTwoDemisionArray(c);
        //System.out.println(Arrays.toString(c));
      }
    
      public static void printTwoDemisionArray(int[][] arr) {
        // int[][] arr.length 表示的是二维数组的长度(可以包含的一维数组的个数)
        // int[] arr[i]是一个一维数组的引用变量  arr[i].length 二维数组中第i个一维数组的长度
    
        //双重循环,遍历二维数组
    
        //外层循环,控制访问二维数组中的哪个一维数组
        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(Arrays.toString(arr[i]));
        }
    
      }
    
    
    }
    
    

    打印杨辉三角

    public class Exercise {
    
      public static void main(String[] args) {
    
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        printTwoDemisionArray(triangleYang(n));
    
      }
    
      public static int[][] triangleYang(int n) {
        int[][] result;
        if (n == 1) {
          result = new int[][]{{1}};
          return result;
        }
    
        if (n == 2) {
          result = new int[][]{{1}, {1, 1}};
          return result;
        }
    
        //当 n>=3 的的时候
        //第二种初始化方式,初始化结果二维数组
        result = new int[n][];
        //先初始化第一行和第二行数据
        result[0] = new int[]{1};
        result[1] = new int[]{1, 1};
    
        //从第三行开始,计算杨辉三角的值
        for (int i = 2; i < n; i++) {
          result[i] = new int[i + 1]; //第i(从0开始编号)行, 元素个数 i + 1
          result[i][0] = 1;  //一行的第一个元素值为1
          result[i][i] = 1;  //一行的最后一个元素,值也为1
    
          for (int j = 1; j < i; j++) {
            //第i行第j列的值 = 第i - 1行第j列值 + 第i - 1行第j - 1列
            result[i][j] = result[i - 1][j] + result[i -1][j - 1];
          }
        }
    
        return result;
    
      }
    
    
      public static void printTwoDemisionArray(int[][] arr) {
        // int[][] arr.length 表示的是二维数组的长度(可以包含的一维数组的个数)
        // int[] arr[i]是一个一维数组的引用变量  arr[i].length 二维数组中第i个一维数组的长度
    
        //双重循环,遍历二维数组
    
        //外层循环,控制访问二维数组中的哪个一维数组
        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(Arrays.toString(arr[i]));
          System.out.println();
        }
    
      }
    
    }
    
    
  • 相关阅读:
    ASP.NET——基础 14、Server
    ASP.NET——基础 15、HttpHandler
    ASP.NET——基础 2、ViewState
    MYSQL VS2010 中文乱码问题
    ASP.NET——基础 10、Web开发的一些基本原则1
    数据结构与算法 2、单向/双向链表
    C#操作XML日志
    web开发入门级学习经验(菜鸟级)
    笔记:键盘键值一览表(JS)
    笔记:JS事件的捕获与冒泡
  • 原文地址:https://www.cnblogs.com/lcpp/p/13090313.html
Copyright © 2011-2022 走看看