Java 将两个二维阵列扩展为更大的阵列

Java 将两个二维阵列扩展为更大的阵列,java,arrays,merge,concatenation,Java,Arrays,Merge,Concatenation,我有两个Java2D数组(array1和array2),都是Double类型,我想把它们连接在一起。 array1和array2是n×d矩阵。每个数组的n行可能各不相同,但d列始终相同。 问题是:我必须在第一个数组之后连接array2。(最多连接到新的outputMatrix中) 例如: 阵列1: 2 3 6 5 4 7 阵列2: 1 5 3 7 输出阵列(n-array1+n-array2)-by-d: 我的想法是将array1复制到outputMatrix中,然后用array2填充它的续

我有两个Java2D数组(array1和array2),都是Double类型,我想把它们连接在一起。 array1和array2是n×d矩阵。每个数组的n行可能各不相同,但d列始终相同。 问题是:我必须在第一个数组之后连接array2。(最多连接到新的outputMatrix中)

例如:

阵列1:

2 3
6 5
4 7
阵列2:

1 5
3 7
输出阵列(n-array1+n-array2)-by-d:

我的想法是将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
        }
}
专用静态双[][]输出矩阵;
outputMatrix=新的双精度[array1.length+array2.length][array1[0.length];
for(int column=0;column
您的索引错误

应该是

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]; 
    }
}
for(int column=0;column

由于array2的索引范围为
0
array2.length-1
,因此您的索引是错误的

应该是

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]; 
    }
}
for(int column=0;column

由于array2的索引范围为
0
array2.length-1
,因此,当您试图将数据从第二个数组传输到outputMatric变量时,第二个数组(array2)中的数据超出了范围。这是因为outputMatrix试图在[array1.length+row][array1.length+column]处放置一个值,而第二个数组没有那个数组大。除此之外,您的行索引是错误的,您需要添加array1长度来弥补它,或者在该位置启动for循环的row变量。我选择将长度添加到变量的存储中。因此,您应该编写代码:

outputMatrix[row + array1.length][column] = array2[row - array1.length][column - array1[0].length];

因此,当您试图将数据从第二个数组传输到outputMatric变量时,您超出了第二个数组(array2)的界限。这是因为outputMatrix试图在[array1.length+row][array1.length+column]处放置一个值,而第二个数组没有那个数组大。除此之外,您的行索引是错误的,您需要添加array1长度来弥补它,或者在该位置启动for循环的row变量。我选择将长度添加到变量的存储中。因此,您应该编写代码:

outputMatrix[row + array1.length][column] = array2[row - array1.length][column - array1[0].length];