【发布时间】:2014-11-01 21:12:28
【问题描述】:
我正在尝试用多维数组做一些事情。我是Java新手,不是一个优秀的程序员,我在互联网上找不到关于这个话题的任何其他内容,所以我想我会在这里问。
本质上,我正在制作一种方法,它将两个多维整数数组的值相加,以创建第三个多维数组。在多维数组是矩阵的情况下(例如,两个 2x3 数组加在一起),这与矩阵加法相同,但如果我有一个具有可变行长的多维数组,则不是这样。到目前为止我的方法是这样的:
public static int[][] addMDArray(int[][] a, int[][] b)
{
boolean columnequals = true;
for (int row = 0; row < a.length; row++)
{
if (a[row].length != b[row].length)
{
columnequals = false;
}
}
if (columnequals == false || a.length != b.length)
System.out.println("The arrays must have the same dimensions!");
else
{
int[][] sum = new int[a.length][a[0].length];
for (int row = 0; row < a.length; row++)
{
for (int column = 0; column < a[row].length; column++)
sum[row][column] = a[row][column] + b[row][column];
}
return sum;
}
return null;
}
正如我所说,这适用于没有可变行长的 MD 数组;但是,除了检查它们是否具有相同维度的第一部分之外,此方法不适用于像这样的两个数组:
int[][] g = {{2, 1}, {3, 5, 4}, {5, 7, 7}};
int[][] d = {{1, 2}, {3, 4, 5}, {5, 6, 7}};
我遇到的问题是我不能在不指定维度的情况下声明“sum”MD 数组...有没有办法在 for 循环本身中创建 sum 数组?我觉得这将是最简单的解决方案(如果可能的话),否则我不知道还能尝试什么。
任何帮助将不胜感激!
【问题讨论】:
-
嘿,与您的问题无关,但稍后可能会为您提供帮助。您可以使用
System.arraycopy()创建具有计算出的高度和宽度的新矩阵。检查我编写的用于更改矩阵大小的代码:MatrixUtils.java -
为什么不垂直遍历数组并找到max(horizontal-size)然后求和,有这个最大维度。有意义吗?
标签: java arrays multidimensional-array