【问题标题】:Adding matrices Java添加矩阵 Java
【发布时间】:2011-08-29 06:40:29
【问题描述】:

我只是在编写一小段用于添加矩阵的代码。目前我写的方法是:

public static int[][] matrixAdd(int[][] A, int[][] B)
{
   int[][]C = new int[A.length][A[0].length];

   for(int i =0; i < A.length; i++)
  {
  for(int j=0; j < A[i].length;j++)
  {
     C[i][j] = A[i][j] + B[i][j]; 
  }
}


return C;
}

此代码确实正确添加了矩阵,但是如果传递给此方法的矩阵为空,则会出现索引越界异常。该错误显然与'C'的大小被声明的行有关。我的逻辑有什么问题?

【问题讨论】:

  • 您确定 A 和 B 的尺寸相同吗?也许你也应该验证一下。
  • 这是开始学习如何使用调试器的绝佳机会。尝试在int C[][] 行设置断点,并在抛出 AIOOBE 时检查各种值。

标签: java matrix


【解决方案1】:

假设 A 和 B 都是具有相同维度的方阵,我认为它会在 A[0].length 中失败,因为您没有检查边界(即空虚)。

要记住的一点是,Java 中的高维数组只不过是数组的数组,因此应该按原样处理。

【讨论】:

    【解决方案2】:

    如果矩阵为空,则语句

     int[][]C = new int[A.length][A[0].length];
    

    将抛出 OutOfBoundsException,因为矩阵 A 的位置 0 无效。

    做两次检查:

     if ((A.length < 0) || (A[0].length < 0)) return B;
     if ((B.length < 0) || (B[0].length < 0)) return A;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      • 2018-08-07
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      相关资源
      最近更新 更多