Java本机数组长度

Java本机数组长度,java,arrays,Java,Arrays,我有一个Java中的二维双精度数组,它基本上是一个值表,我想知道它有多少行 在其他地方声明(并分配)如下: double[][] table; int rows = array.length; 然后传递给函数 private void doSomething(double[][] table) { } 在我的函数中,我想知道每个维度的长度,而不必将它们作为参数传递。我可以这样做的列数,但不知道如何做它的行 int cols = table[0].length; int rows = ?;

我有一个Java中的二维双精度数组,它基本上是一个值表,我想知道它有多少行

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

double[][] table;
int rows = array.length;
然后传递给函数

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

}
在我的函数中,我想知道每个维度的长度,而不必将它们作为参数传递。我可以这样做的列数,但不知道如何做它的行

int cols = table[0].length;
int rows = ?;
我该怎么做

我可以说

int rows = table.length;
为什么不给行x列?

看。它们使用.length获取行计数,使用[].length获取列计数


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

在Java中,2D数组只不过是数组的数组

这意味着您可以轻松获得如下行数:

double[][] table;
int rows = array.length;
这也意味着这样一个数组中的每一行可以有不同数量的元素(即每一行可以有不同数量的列)

这将只提供第一行中的列数,但第二行中的列数可以多于或少于该列数

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


这种数组称为a。

不,它不会。你可以用table.length,我不太明白你的问题。您必须认识到,在Java中,多维数组实际上是数组的数组

table.length
实际上会给出二维数组中包含的一维数组的数量(假设没有空条目)


表[0]。长度将为您提供第一个一维条目的大小。这可能与其他的大小不同,并且可能引发NullPointerException(尽管当它被分配为新的双[行][cols]
时,这两种情况都不可能发生)。

首先,为什么不测试一下

int rows = table.length;
给出期望的结果

它确实给出了第一维度中元素的数量。多维数组实际上并没有什么特别之处,因为它们只是。。。在您的例子中(2D数组),它是这样组织的(在伪代码中):

因此,当访问foo时,它引用“outer”数组,当然它有length属性,它包含它在第二级上包含的数组的数量


您可以将double[]]读取为“双arrray(double[])的数组([])”

或者,您可以将2d数组包装成某种矩阵或网格类。在内部,可以将其表示为一维数组,并计算行/列坐标的偏移量