【问题标题】:My matrix multiplication function is returning blank or incorrect outputs我的矩阵乘法函数返回空白或不正确的输出
【发布时间】:2019-04-06 06:37:31
【问题描述】:

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

当我输入时
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.

【问题讨论】:

  • k = 02 在第三个循环中,为什​​么不 k=0 ?

标签: java matrix-multiplication


【解决方案1】:

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

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

arr1[0].length 将返回 2,因为只有 2 个元素,而 k 将返回 false。所以你的第三个循环将在没有任何求和和乘法的情况下退出。这就是为什么你得到所有元素 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];
        }
      }
    }

【讨论】:

  • 是的,谢谢。这是我错过的一个愚蠢的错误。抱歉带来了愚蠢的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2013-04-15
  • 1970-01-01
相关资源
最近更新 更多