亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的矩陣乘法函數返回空白或不正確的輸出

我的矩陣乘法函數返回空白或不正確的輸出

動漫人物 2022-09-22 19:44:03
我編寫的用于乘法矩陣的函數沒有正確放出或給我一個空白的函數。它設法給了我一個正確的輸出,盡管我再也找不到那個數組了。當我輸入它返回一個零數組時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貢獻1852條經驗 獲得超7個贊

您的第三個循環是錯誤的。你用 2 初始化 k,它應該是 k=0?,F在以你為例。您的矩陣是


int[][] test = new int[][]{

      {2, 4},

      {5, 3},

      {3, 5}

    };

arr1[0].長度將返回 2,因為只有 2 個元素,而 k < arr1[0].長度將返回 false。因此,您的第三個循環將在沒有任何求和乘法的情況下退出。這就是為什么你得到所有元素0。將第 3 個循環更改為 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];

        }

      }

    }


查看完整回答
反對 回復 2022-09-22
  • 1 回答
  • 0 關注
  • 75 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號