【问题标题】:extending two 2D Arrays into a larger one将两个二维数组扩展成一个更大的数组
【发布时间】:2014-09-16 04:23:04
【问题描述】:

我有两个 java 2D 数组(array1 和 array2),都是 Double 类型,我想将它们连接在一起。 array1 和 array2 是 n×d 矩阵。每个数组的 n 行可以彼此不同,但 d 列始终相同。 问题是:我必须在第一个之后连接array2。(充其量进入新的输出矩阵)

例子:

数组1:

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
        }
}

【问题讨论】:

    标签: java arrays merge concatenation


    【解决方案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]; 
        }
    }
    

    因为 array2 具有从 0array2.length-1 的索引。

    【讨论】:

      【解决方案2】:

      所以发生的情况是,当您尝试将数据从第二个数组传输到 outputMatric 变量时,您会超出第二个数组 (array2) 的范围。这是因为您 outputMatrix 试图在 [array1.length + row][array1.length + column] 处输入一个值,而第二个数组没有那个大。最重要的是,您的行索引是错误的,您需要添加 array1 长度来弥补它或在该位置启动 for 循环的行变量。我选择只是将长度添加到变量的存储中。所以,你应该制作你的代码:

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

      【讨论】:

        猜你喜欢
        • 2021-10-29
        • 2018-12-16
        • 1970-01-01
        • 2013-05-28
        • 2017-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-13
        相关资源
        最近更新 更多