在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数组,或者即使 工作也是如此。我该如何处理?
答案 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;
}