我有两个java 2D数组(array1和array2),都是Double类型,我想连接在一起。 array1和array2是n-by-d矩阵。每个阵列的n行可以彼此不同,但d列总是相同的。 问题是:我必须在第一个之后连接array2。(最好进入新的outputMatrix)
示例:
ARRAY1:
2 3
6 5
4 7
数组2:
1 5
3 7
输出数组(n-array1 + n-array2)-by -d:
2 3
6 5
4 7
1 5
3 7
我的想法是将array1复制到outputMatrix中,然后用array2填充它的延续。
用于合并两个数组(已经实现)的Java代码如下所示:
private static double[][] outputMatrix ;
outputMatrix = new double[array1.length+array2.length][array1[0].length];
for (int column = 0; column < array1[0].length; column++) {
for (int row = 0; row < (array1.length); row++) {
outputMatrix[row][column] = array1[row][column];
}
}
for (int column = 0; column < array1[0].length; column++) {
for (int row = array1.length; row < (array1.length+ array2.length); row++) {
outputMatrix[row][column] = array2[row][column]; //error here as array2 starts iterating at field [4][0] which isnt defined in the example
}
}
答案 0 :(得分:4)
你的指数错了。
应该是
for (int column = 0; column < array1[0].length; column++) {
for (int row = 0; row < array2.length; row++) {
outputMatrix[row+array1.length][column] = array2[row][column];
}
}
因为array2具有从0
到array2.length-1
的索引。
答案 1 :(得分:1)
所以正在发生的事情是,当您尝试将数据从第二个数组传输到outputMatric变量时,您将超出第二个数组(array2)中的范围。这是因为你是outputMatrix试图在[array1.length + row] [array1.length + column]放置一个值而第二个数组没有那么大。最重要的是,你的行索引是错误的,你需要添加array1长度来弥补它,或者在那个位置启动for循环的行变量。我选择只是将长度添加到变量的存储中。所以,你应该制作你的代码:
outputMatrix[row + array1.length][column] = array2[row - array1.length][column - array1[0].length];