代码之家  ›  专栏  ›  技术社区  ›  Simon

Java原生数组长度

  •  3
  • Simon  · 技术社区  · 16 年前

    我在Java中有一个二维的double数组,它基本上是一个值表,我想知道它有多少行。..

    它在其他地方声明(和分配)如下:

    double[][] table;
    

    然后传递给函数。..

    private void doSomething(double[][] table)
    {
    
    }
    

    在我的函数中,我想知道每个维度的长度,而不必将它们作为参数传递。我可以对列数执行此操作,但不知道如何对行执行此操作。..

    int cols = table[0].length;
    int rows = ?;
    

    我该怎么做?

    我只能说。..

    int rows = table.length;
    

    6 回复  |  直到 16 年前
        1
  •  18
  •   Joachim Sauer    16 年前

    int rows = array.length;
    

    具有不同数量的元素(即每行可以有不同数量的列)。

    int columnsInFirstRow = array[0].length;
    

    您可以指定您的方法只接受矩形数组 每一行的列数与第一行相同。但在这种情况下,我会将2D数组封装在某个Matrix类中(您可能需要编写)。

    Jagged Array .

        2
  •  2
  •   schnaader    16 年前

    at this example 它们使用.length来获取行数,使用[].length获取列数。

    这是因为数组由“行”指针组成,这些指针可能指向任何地方,所以你必须为每一列使用.length来获取这些数组的大小。

        3
  •  1
  •   Michael Borgwardt    16 年前

    我不太明白你的问题。您必须意识到,在Java中,多维数组实际上是数组的数组。

    table.length

    table[0].length new double[rows][cols] ).

        4
  •  1
  •   Simon Lehmann    16 年前

    首先,你为什么不测试一下

    int rows = table.length;
    

    它确实给出了第一维度中的元素数量。多维数组实际上没什么特别的,因为它们只是数组的数组。..在您的情况下-一个2D数组-它的组织方式如下(在伪代码中):

    double[][] foo = { double[] = {...}, double[] = {...}, ... }
    

    你可以将double[]读作“双arrray(double[])的数组([])”。

        5
  •  0
  •   tehvan    16 年前

        6
  •  0
  •   Wouter Lievens    16 年前

    或者,您可以将2d数组包装成某种Matrix或Grid类。在内部,您可以把它表示为1d数组,并计算行/列坐标的偏移量。