動(dòng)漫人物
2022-09-22 19:44:03
我編寫的用于乘法矩陣的函數(shù)沒有正確放出或給我一個(gè)空白的函數(shù)。它設(shè)法給了我一個(gè)正確的輸出,盡管我再也找不到那個(gè)數(shù)組了。當(dāng)我輸入它返回一個(gè)零數(shù)組時(shí)int[][] test = new int[][]{ {2, 4}, {5, 3}, {3, 5} }; int[][] test2 = new int[][]{ {3, 4, 2}, {5, 1, 2}}; int[][] toRet = new int[arr1.length][arr2[0].length]; for(int i = 0; i < arr1.length; i++){ for(int j = 0; j < arr2[0].length; j++){ for(int k = 02; k < arr1[0].length; k++){ toRet[i][j] += arr1[i][k] * arr2[k][j]; } } } return toRet; }``` It worked for a minute and I didn't change anything but my test.
1 回答

慕姐4208626
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
您的第三個(gè)循環(huán)是錯(cuò)誤的。你用 2 初始化 k,它應(yīng)該是 k=0?,F(xiàn)在以你為例。您的矩陣是
int[][] test = new int[][]{
{2, 4},
{5, 3},
{3, 5}
};
arr1[0].長度將返回 2,因?yàn)橹挥?2 個(gè)元素,而 k < arr1[0].長度將返回 false。因此,您的第三個(gè)循環(huán)將在沒有任何求和乘法的情況下退出。這就是為什么你得到所有元素0。將第 3 個(gè)循環(huán)更改為 k=0,如下所示:
for(int i = 0; i < arr1.length; i++){
for(int j = 0; j < arr2[0].length; j++){
for(int k = 0; k < arr1[0].length; k++){
toRet[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
添加回答
舉報(bào)
0/150
提交
取消