数组索引超出界限:矩阵(点积)

时间:2017-10-31 04:06:16

标签: arrays matrix indexoutofboundsexception

使用二维数组表示矩阵。 计算矩阵的乘积并将数据存储在一个新的二维数组中。 打印Matrix A Row 2和Matrix B Column 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

2 个答案:

答案 0 :(得分:0)

你的阵列A&amp; B有4个元素,你正在运行循环5.你需要改变for循环,如下所示。

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

答案 1 :(得分:0)

对于阵列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 doesn存在。 这就是你得到错误的原因。 检查附件图像。 Image 检查下面的图像