我有一段代码,将两个数组相乘,一个是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错误。
先谢谢你了
创建一个少两行的数组,用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;
}
试试这段代码,用这个做例子 因为你不能展示你的代码,希望这对你有用
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);