Java 使用多维数组进行矩阵乘法
我试图编写一个代码,将两个给定的矩阵相乘,并显示结果。以下是我到目前为止写下的代码:Java 使用多维数组进行矩阵乘法,java,arrays,multidimensional-array,matrix-multiplication,Java,Arrays,Multidimensional Array,Matrix Multiplication,我试图编写一个代码,将两个给定的矩阵相乘,并显示结果。以下是我到目前为止写下的代码: publicstaticvoidmain(字符串[]args){ 双第一矩阵[][]={{1,2},{3,4},{5,6}; 双二次矩阵[][]={{1,2,3},{4,5,6}; double[][]第三矩阵=多矩阵((第一矩阵),(第二矩阵)); System.out.println(“矩阵的乘积为”); 对于(int i=0;i
publicstaticvoidmain(字符串[]args){
双第一矩阵[][]={{1,2},{3,4},{5,6};
双二次矩阵[][]={{1,2,3},{4,5,6};
double[][]第三矩阵=多矩阵((第一矩阵),(第二矩阵));
System.out.println(“矩阵的乘积为”);
对于(int i=0;i
public static double[]]multipleMatrix(double[]]a,double[]]b){
双c[][]=新双[3][3];
for(int i=0;i
但是当我尝试执行程序时,我收到一个数组索引越界错误,这不应该是这种情况,因为我的for循环确保不会从数组越界。我不知道在哪里更改代码,因为在我尝试执行之前它看起来很好。非常感谢您的帮助。如果第一个矩阵的尺寸是
mxn
,第二个矩阵的尺寸是nxp
,则产品的尺寸是mxp
。对吧?因此,三重循环的第二级应该在产品阵列的第二维度中迭代:
for (int j = 0; j < b.length; j++)
b.length
是矩阵b的行数,等于矩阵a的列数。编辑
在通用版本中,您可以更改以下内容:
double c[][] = new double[3][3];
到
publicstaticvoidmain(字符串[]args){
双第一矩阵[][]={{1,2},{3,4},{5,6};
双二次矩阵[][]={{1,2,3},{4,5,6};
double[][]第三矩阵=多矩阵((第一矩阵),(第二矩阵));
System.out.println(“矩阵的乘积为”);
对于(int i=0;i 如果(i)异常堆栈跟踪告诉您索引是什么,以及异常抛出的位置。不要忽略它。使用您的调试器。hi@JBNizet我按照您所说的做了,并且能够确定问题出在哪里。即在'c[i][j]+=((a[i][k])*(b[k][j]))。
for (int k = 0; k < b.length; k++)
double c[][] = new double[3][3];
double c[][] = new double[a.length][b[0].length];