查找未知尺寸的2D阵列的最大高度和宽度(Java)

时间:2017-07-29 05:15:06

标签: java arrays multidimensional-array

在Java中,我想从简单图像数组的两个维度获取最大元素,即:

int getWidth(Color[][] pixels){
    //return max of dimension 1
}

int getHeight(Color[][] pixels){
    //return max of dimension 2
}

我知道如何在Java中为1D数组执行此操作,我只需运行for循环,条件为i< pixels.length。但是,我不太确定.lelength如何适用于2D数组,或者即使 工作也是如此。我该如何处理?

2 个答案:

答案 0 :(得分:1)

.length是否仍有效?

2D数组只是一个数组,其中的项是其他数组。由于.length适用于一维数组,因此它肯定适用于所有数组 - 维度数量无关紧要。

但是pixels.length为您提供父数组的长度 - 即包含其中所有其他数组的数组。要获得第二个维度的长度,您必须获得其中数组的长度。

那么,我们如何得到第二维的长度?

我们知道所有这些数组的长度必须相同,所以我们只使用位置0处的那个数据,因为它是唯一一个我们可以100%确定永远存在的数组 - 数组应该总是至少有一个元件。

然后,我们得到该数组的长度 - pixels[0].length

答案 1 :(得分:0)

如果我们考虑2D数组,它就是一个包含对其他数组的引用的数组。 如果我们考虑像这样的矩阵:

{
    {1,2,3},
    {4,6},
    {7,7,8,9}
}

因此上面矩阵的高度为3 =否。行。

矩阵宽度为4 =最大值(每个数组中的元素数量)。

int getHeight(Color[][] pixels) {
    return pixels.length;
}

int getWidth(Color[][] pixels) {
    int maxCount = 0;
    int rows = pixels.length;
    for (int i = 0; i < rows; i++) {
        if (maxCount < pixels[i].length) {
            maxCount = pixels[i].length;
        }
    }
    return maxCount;
}