Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用多维数组进行矩阵乘法_Java_Arrays_Multidimensional Array_Matrix Multiplication - Fatal编程技术网

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];