为了账号安全,请及时绑定邮箱和手机立即绑定

我的矩阵乘法函数返回空白或不正确的输出

我的矩阵乘法函数返回空白或不正确的输出

动漫人物 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。现在以你为例。您的矩阵是


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 关注
  • 51 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信