Java中的二维数组操作



我正在尝试使用这一个二维数组,表示图像的灰度…我想通过平均2x2块并将每个值替换为2x2网格的平均值来像素化图像……例如,如果输入是数组

   2,  4, 31, 31   
   3,  3, 21, 41
   1,  2, 10, 20
   3,  2, 20, 30

然后从第一个2x2子数组开始(从左上角开始)

   2,  4
   3,  3
并求该子数组的平均值(即(2+4+3+3)/4 = 3)。在返回的数组中,第一个2x2子数组将为
   3,  3
   3,  3

然后我们看下一个2x2块

   31,  31
   21,  41

平均为31,输出中的下一个2x2块将是

   31,  31
   31,  31
我想知道什么方法能最好地解决这个问题。不太确定如何解决它…提前感谢

你可以很容易地在Java中声明一个多维数组:

double matrix[][] = new double[size][size];
然后,您可以使用标准下标来处理单个元素。例如:
int row = 2;
int col = 3;
double val = matrix[row][col]; // etc.
matrix[row][col] = 7;
但是,从技术上讲,Java没有多维数组。相反,它有数组的数组。访问多维数组元素可能比访问(单维)数组要慢一些。您总是可以编写自己的Matrix类,它将值维护为单个数组并从矩阵坐标计算下标。就性能而言,我不确定这样做是否值得。此外,还有大量的矩阵包可用于Java。在web上搜索java矩阵包会得到很多高质量的结果。对于你想做的事情来说,它们可能都是多余的。

相关内容

  • 没有找到相关文章

最新更新