【问题标题】:2D Array manipulation in Java [closed]Java中的二维数组操作[关闭]
【发布时间】:2013-03-01 18:06:29
【问题描述】:

我正在尝试使用表示图像灰度的二维数组...我想通过平均 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 arrays oop multidimensional-array


【解决方案1】:

你可以很容易地在 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 的矩阵包。对 java 矩阵包 的网络搜索会发现很多高质量的搜索结果。对于您正在尝试做的事情,它们都可能是矫枉过正。

【讨论】:

    猜你喜欢
    • 2015-06-21
    • 2014-12-05
    • 2013-02-25
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多