Java 重温记录之二维数组

二维数组

二维数组相比于一维数组用得较少,可只作为理解

  • 定义:二维数组中的元素就是一维数组
  • 格式:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    - 数据类型[][] 数组名 = new 数据类型[m][n];
    int[][] arr = new int[m][n]; // m --> 几个元素; n --> 元素中有几个数据

    - 数据类型[][] 数组名 = new 数据类型[m][];
    int[][] arr = new int[m][];

    - 数据类型[][] 数组名 = new 数据类型[][]{{...}, {...}, {...}};
    int[][] arr = new int[][]{{1,2}, {3,4}, {5,6}};

    - 数据类型[][] 数组名 = {{...}, {...}, {...}};
    int[][] arr = {{1,2}, {3,4}, {5,6}};

二维数组的常见操作

  • 二维数组的遍历

    遍历
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int x = 0; x < arr.length; x++) {
    for(int y = 0; y < arr[x].length; y++) {
    System.out.print(arr[x][y]+" ");
    }
    System.out.println();
    }

    arr.length --> 二维数组长度
    arr[x].length --> 二维数组中的元素 (一维数组) 的长度
  • 二维数组求和

    求和
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int sum = 0;

    for(int x = 0; x < arr.length; x++) {
    for(int y = 0; y < arr[x].length; y++) {
    sum += arr[x][y];
    }
    }
    System.out.println(sum);

    // 获取到每一个元素,进行累加
  • 杨辉三角形

    杨辉三角形
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    /*
    打印杨辉三角形(行数可以键盘录入)
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1

    分析:规律
    A:任何一行的第一列和最后一列都是 1
    B:从三行开始,每一个数据是它上一行的前一列和它上一行的本列之和

    步骤:
    A:定义一个二维数组,行数为n,列数也先定义为n
    n来自键盘录入
    B:给这个二维数组任何一行的第一列和最后一列赋值为 1
    C:按照规律给其他元素赋值
    从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和
    D:遍历这个二维数组
    */

    class Array2Test3 {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    System.out.println("输入一个数据");
    int n = sc.nextInt();

    int[][] arr = new int[n][n];

    // 给这个二维数组任何一行的第一列和最后一列赋值为 1
    for(int x = 0; x < arr.length; x++) {
    arr[x][0] = 1; //任何一行的第一列
    arr[x][x] = 1; //任何一行的最后一列
    }
    // 按照规律给其他元素赋值
    // 从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和
    for(int x = 2; x < arr.length; x++) {
    // 这里如果y<=有个小问题,最后一列的问题,要减1
    for(int y = 1; y <= x-1; y++) {
    // 每一个数据是它上一行的前一列和它上一行的本列之和
    arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
    }
    }

    // 遍历
    /*
    for(int x = 0; x < arr.length; x++) {
    for(int y = 0; y < arr[x].length; y++) {
    System.out.print(arr[x][y]+"\t");
    }
    System.out.println();
    }*/

    // 注意:内循环的变化必须和九九乘法表类似
    for(int x = 0; x < arr.length; x++) {
    for(int y = 0; y <= x; y++) {
    System.out.print(arr[x][y]+"\t");
    }
    System.out.println();
    }
    }
    }