完善二维阵列

问题描述 投票:0回答:1

我有一段代码,将两个数组相乘,一个是6x6,一个是3x3,但输出的是一个6x6的二维数组,而我需要的是一个4x4的二维数组。

输出的结果是这样的。

[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]

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

由于抄袭规则,我不能发代码,但我之所以没有输出四驱车,是因为我一直收到Out of Bounds错误。

先谢谢你了

java arrays for-loop multidimensional-array
1个回答
0
投票

创建一个少两行的数组,用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;
}

0
投票

试试这段代码,用这个做例子 因为你不能展示你的代码,希望这对你有用

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);
© www.soinside.com 2019 - 2024. All rights reserved.