【问题标题】:How to print a multidimensional array in Java?如何在 Java 中打印多维数组?
【发布时间】:2020-10-25 03:37:42
【问题描述】:
int arr[][] = new int[2][];

我是 Java 的初学者,当我们在 Java 中初始化多维数组时,我不明白为什么这是有效的。我试图打印一个多维数组使用

System.out.println(Arrays.toString(arr));

我看不到值;相反,它打印的是对象的地址。

【问题讨论】:

  • 打印的不是内存地址,而是hex格式的对象hash,见the Object::toString documentation。至于初始化:如果初始化一个多维数组,只需要定义最外层的维度。应该记住,多维数组只是数组的数组。因此每个内部数组可以有不同的大小。

标签: java arrays multidimensional-array


【解决方案1】:

int arr[][] = new int[2][]; 创建一个由两个一维数组组成的数组,其中每个数组可以有任意长度。多维数组初始化只需要指定第一维。

您需要使用Arrays.deepToString 来打印多维数组的元素。

System.out.println(Arrays.deepToString(arr));

【讨论】:

    【解决方案2】:

    声明是有效的,因为int[][] 是一个数组数组。所以int[x] 本身就是一个数组。如果您声明 int[2][],则该数组内最多可以有 2 个数组,但您不指定内部数组的大小。

    这也是Arrays#toString() 不起作用的原因。因为你只是 #toString 内部数组。

    【讨论】:

      【解决方案3】:

      了解为什么它可以正常工作

      int arr[][] = new int[2][];
      

      我们需要知道什么是Java中的锯齿状数组

      Jagged array is array of arrays such that member arrays can be of different sizes

      int[][] arr = new int[2][];
      
      // row 0 gets 5 columns
      arr[0] = new int[5];
      // row 1 gets 11 columns
      arr[1] = new int[11];
      

      所以要创建一个数组,我们只需要传递行数,因为列数可以是可变的

      如何遍历锯齿状数组

      int a[][] = new int[2][];
      a[0] = new int[2];
      a[1] = new int[1];
      
      a[0][0] = 1;
      a[0][1] = 2;
      a[1][0] = 3;
      
      for(int i[]: a) {
          for(int j: i) {
              System.out.println(j);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2020-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-13
        • 2014-04-13
        • 1970-01-01
        • 2021-11-13
        相关资源
        最近更新 更多