【问题标题】:Array Index Out of Bounds: Matrix (Dot Product)数组索引越界:矩阵(点积)
【发布时间】:2018-04-12 04:03:30
【问题描述】:

使用二维数组来表示矩阵。 计算矩阵的乘积并将数据存储在新的二维数组中。 打印矩阵 A 第 2 行和矩阵 B 第 1 列的乘积。 您想将 A 和 B 相乘以找到乘积矩阵 C。为方便起见,假设(现在)您只想计算乘积矩阵 C 中第 2 行第 1 列的值。 但是,要计算矩阵 C 的第 2 行第 1 列的值,您需要计算 A 的整个第 2 行和 B 的整个第 1 列的“点积”:

我的程序告诉我,我的数组索引超出范围,异常为 4,但我不知道如何解决它

public class lab
{
   public static void main(String[] args)
   {

      int[][] A = { {10,55,4,89,39} , {45,9,49,98,23} , {4,8,90,23,9} 
{8,32,80,2,31} };

      int[][] B = { {10,55,4,89,39} , {45,9,49,98,23} , {4,8,90,23,9} , {8,32,80,2,31} };

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

      int sum = 0;

      for (int i = 0 ; i < 5 ; i++)
      {
         sum = sum + A[2][i]*B[i][1];
      }

      C[2][1] = sum;

      System.out.println(sum);

   } // end main
} // end class

输出应该是:

1616

【问题讨论】:

  • 你在哪一行得到这个异常?
  • 在:sum = sum + A[2][i] * B[i][1]
  • B 只有 4 个元素。但您正在尝试访问 5 个元素。改变循环
  • 发布您需要计算的方程式,例如 45*16 + 35*2 + 等 ..

标签: arrays matrix indexoutofboundsexception


【解决方案1】:

您的数组 A 和 B 都有 4 个元素,您正在通过 5 个元素运行循环。您需要更改 for 循环,如下所示。

 for (int i = 0 ; i < 4 ; i++)

【讨论】:

    【解决方案2】:

    对于数组 B,您可以t get element of B[4][4]. Maximum will be B[3][4]. array indexes starts from 0. so you have elements. 0,1,2,3. when counter hits 4, you try to get the element B[4] and the index doesnt 存在。 这就是您收到错误的原因。 也检查附加的图像。 查看下图

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多