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

时间:2019-04-06 06:37:31

标签: java matrix-multiplication

我编写的用于乘法矩阵的函数未正确输出或给我一个空白。它设法给了我一个正确的输出,尽管我再也找不到该数组了。

输入时
     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 个答案:

答案 0 :(得分:0)

您的第3个循环是错误的。您使用2初始化了k,它应该为k = 0。现在带你 例。您的矩阵是

int[][] test = new int[][]{
      {2, 4},
      {5, 3},
      {3, 5}
    };

arr1 [0] .length 将返回2,因为只有2个元素,而 k 将返回false。因此,您的第3个循环将退出而无需进行任何求和和乘法。这就是为什么您将所有元素都设为0的原因。 将您的第三个循环更改为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];
        }
      }
    }