【问题标题】:2D array length in java when decleared with int[][] a = new int[0][N]使用 int[][] a = new int[0][N] 清除时 java 中的二维数组长度
【发布时间】:2012-09-21 08:07:18
【问题描述】:

有人可以向我解释为什么这不起作用:

int[][] array = new int[0][5];
int n = array[0].length;

虽然这确实有效:

int[][] array = new int[5][5];
int n = array[0].length;

当我遇到这个问题时,我正在做一些单元测试来查找 NxN 数组的宽度和高度。

【问题讨论】:

  • 明确一点,这不是问题 :p

标签: java arrays width 2d


【解决方案1】:

您正在创建一个大小为零的数组,该数组将容纳一个大小为 5 的数组

int[][] array = new int[0][5];

您必须至少给出 1 的维度

int[][] array = new int[1][5];  

基本上变成一维数组

int[] array = new int[5];

【讨论】:

    【解决方案2】:

    int[][] a = new int[x][y] 是创建 x 大小为 y 的数组的循环的简写:

    int[][] a = new int[x][];
    for (int i = 0; i < x; i++)
      a[i] = new int[y];
    

    x 为零时,y 无关紧要,因为从未创建大小为y 的数组。事实上,在一般情况下,没有理由 x 数组需要相同大小,甚至存在,因为 a 的任何元素都可以是 null 而不是 int 数组。

    【讨论】:

      【解决方案3】:
      int[][] a = new int[0][5]; 
      

      您正在尝试创建大小为零的数组,请记住在二维数组中first [] 代表arraysize

      例子:

      int[][] a = new int[2][4];    
      a = {(1,2,3,4}, {5,6,7,8}}
      System.out.println(a.length);// would return `2`
      

      【讨论】:

      • 说第一个括号启动 2D 数组的大小有点正确,但也有点令人困惑。
      • 例如,如果你说 "number of arrays",那就不那么模棱两可了。这很令人困惑,因为您可以引用许多数组,但您的意思是外部数组。它也可以被描述为行和列,但这更像是一种抽象。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2020-07-19
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      相关资源
      最近更新 更多