多维数组

一、表格或矩阵中的数据可以表示为二维数组.例如,使用名为distances的二维数组就可以存储下面这个描述城市之间距离的表格。

  北京 上海 广州 武汉 天津
北京  0  1254  2158 1158   138
上海  1254  0  1478  839  1106
广州  2158  1478  0  1020  2145
武汉  1158   839  1020  0  1144
天津  138  1106  2145  1144  0

 double[][] distances = {

  {0,1254,2158,1158,138},

  {1254,0,1478,839,1106},

  {2158,1478,0,1020,2145},

  {1158,839,1020,0,1144},

  {138,1106,2154,1144,0}

}

二、声明二维数组变量并创建二维数组

1.静态初始化二维数组方式一

              int[][] matrix = {{1,2,3},{4,5},{6,7,8}};

2.静态初始化二维数组方式二

              int[][] matrix = new int[][]{{1,2,3},{4,5},{6,7,8}};

3. 动态初始化二维数组方式一:

       int[][] list = new int[3][4];

4. 动态初始化二维数组方式二:

       二维数组中的每一行本身就是一个数组,因此,各行的长度就可以不同。这样的数组称为锯齿数组

  从图中可以看到,triangleArray[0].length=5,   triangleArray[1].length=4,....triangleArray[4].length=1

  如果事先不知道锯齿数组的值,但知道它们的长度,可以使用下面的语法创建锯齿数组:

  int[][] triangleArray =  new int[5][];

  triangleArray[0] = new int[5];
  triangleArray[1] = new int[4];
  triangleArray[2] = new int[3] ;
  triangleArray[3] = new int[2] ;
  triangleArray[4] = new int[1];

  注意:以下这种方式错误

       int demo[][] = new int[][3];

案例:杨辉三角

import java.util.Arrays;
import java.util.Scanner;

public class YanghuiTriangle {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入杨辉三角的行数");
        int line = input.nextInt();
        input.close();
        
        int[][] triangle = new int[line][];
        //给每一行定义元素个数
        for(int i = 0; i < triangle.length; i++) {
            triangle[i] = new int[i + 1];
        }

      for (int i = 0; i < triangle.length; i++) {
        triangle[i][0] = triangle[i][i] = 1;
        for (int j = 1; j < triangle[i].length - 1; j++) {
          triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
        }
      }

        printArray(triangle);
    }
    
    public static void printArray(int[][] list) {
        for(int i = 0; i < list.length; i++) {
            for(int j = 0; j < list[i].length; j++) {
                System.out.print(list[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

5.如何调用二维数组里的元素

  int[][] matrix = new int[5][5];

  二维数组通过元素的行和列的下标来访问。二维数组中使用两个下标,一个表示行,一个表示列。同一维数组一样,每个下标索引值都是int型的,从0开始。     

如将10赋给行下标为2,列下标为1的特定元素,可以使用下面的语句:

  matrix[2][1] = 10;

6.如何确定数组的长度

       二维数组实际上一个数组,它的每个元素都是一个一维数组。确定数组的长度,直接用“数组名.length”即可。元素matrix[0],matrix[1],...,matrix[matrix.length - 1]也是数组,可以使用matrix[0].length,matrix[1].length,.....获取它们的长度

  例如:x = new int[3][4],那么x[0],x[1],x[2]都是一维数组,每个数组都包含4个元素。如下图所示:

      

7.如何遍历二维数组

  嵌套的for循环常用于处理二维数组:

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

二维数组的其它处理方式,包括作为参数传递参照一维数组

posted @ 2020-05-07 17:52  Tiger-Adan  阅读(756)  评论(0编辑  收藏  举报