【问题标题】:Refining 2-D Arrays精炼二维数组
【发布时间】:2020-04-23 15:53:59
【问题描述】:

我有将 2 个数组乘以 6x6 和 3x3 的代码,但是当我需要它位于 4x4 2D 数组中时,输出位于 6x6 2D 数组中。

输出如下所示:

[20, 0, 10, 10, 0, 20]
[20, 0, 10, 10, 0, 20]
[20, 0, 10, 10, 0, 20]
[20, 0, 10, 10, 0, 20]
[20, 0, 10, 10, 0, 20]
[20, 0, 10, 10, 0, 20]

当我需要它看起来像这样时

[0, 10, 10, 0]
[0, 10, 10, 0]
[0, 10, 10, 0]
[0, 10, 10, 0]

我是否必须重新设计我的循环代码,或者我是否可以创建一个新循环,用我当前输出的中间部分填充一个数组

由于抄袭规则,我无法发布代码,但我不输出 4x4 的原因是因为我不断收到 Out of Bounds 错误。

提前致谢

【问题讨论】:

  • 这能回答你的问题吗? Reading 2-D array from a file
  • 这是2个矩阵的卷积乘法
  • 按规则:m * n X n * o = m * o 怎么可能6x6 with a 3x3

标签: java arrays for-loop multidimensional-array


【解决方案1】:

创建一个少两行的数组,并使用 Arrays.copyOfRange 复制每行的中间:

public int[][] arrayMiddle(int[][] array) {
    int[][] out = new int[array.length - 2][];
    for (int i = 1; i < array.length - 1; ++i) {
        out[i-1] = Arrays.copyOfRange(array[i], 1, array[i].length - 1);
    }
    return out;
}

【讨论】:

    【解决方案2】:

    试试这个代码示例,以此为例
    由于您无法显示您的代码,希望这对您有用

    int firstarray[][] = {{20, 0, 10, 10, 0, 20}, {20, 0, 10, 10, 0, 20}, {20, 0, 10, 10, 0, 20}, {20, 0, 10, 10, 0, 20}, {20, 0, 10, 10, 0, 20}, {20, 0, 10, 10, 0, 20}};
    
    int secondarray[][] = {{0, 10, 10, 0}, {0, 10, 10, 0}, {0, 10, 10, 0}, {0, 10, 10, 0}};
    
    /* Create new 2d array to store the multiplication result using the original arrays' lengths on row and column respectively. */
    
    
    int [][] resultArray = new int[firstarray.length][secondarray[0].length];
    
    
    /* Loop through each and get the product, then sum up and store the value */
    
    for (int i = 0; i < firstarray.length; i++) { 
    for (int j = 0; j < secondarray[0].length; j++) { 
        for (int k = 0; k < firstarray[0].length; k++) { 
            resultArray[i][j] += firstarray[i][k] * secondarray[k][j];
        }
    }
    }
    
    /* Show the result */
    display(resultArray);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多