Java 为什么我的2D数组乘法输出不正确?

Java 为什么我的2D数组乘法输出不正确?,java,arrays,matrix,multidimensional-array,matrix-multiplication,Java,Arrays,Matrix,Multidimensional Array,Matrix Multiplication,我必须通过一个2D数组的乘法来求图中的距离,我试图乘法图中的数组,这是可行的,但输出是不正确的。 我不知道问题出在哪里 公共类图{ 私有int[][]邻接矩阵={ {0, 1, 0, 1, 0}, {1, 0, 1, 0, 1}, {0, 1, 0, 1, 0}, {1, 0, 1, 0, 0}, {0, 1, 0, 0, 0}}; int size=邻接矩阵.length; 私有int[]distanceMatix=新int[size][size]; 公共空间{ 整数和=0; //für al

我必须通过一个2D数组的乘法来求图中的距离,我试图乘法图中的数组,这是可行的,但输出是不正确的。 我不知道问题出在哪里

公共类图{
私有int[][]邻接矩阵={
{0, 1, 0, 1, 0},
{1, 0, 1, 0, 1},
{0, 1, 0, 1, 0},
{1, 0, 1, 0, 0},
{0, 1, 0, 0, 0}};
int size=邻接矩阵.length;
私有int[]distanceMatix=新int[size][size];
公共空间{
整数和=0;
//für alle Zeilen在这个矩阵中
对于(int row=0;row德泽勒的für alle Zellen
//其他矩阵->für alle Zellen in der Spalte
对于(int index=0;index
我的输出:

0 0 2 0 1 
0 0 0 2 0 
2 0 0 0 1 
0 2 0 0 0 
1 0 1 0 0 
正确的输出是:

0 1 2 1 2
1 0 1 2 1
2 1 0 1 2
1 2 1 0 3
2 1 2 3 0

你的内部循环应该是这样的。基本数组在创建时初始化为
0
,当
row==col
时,您不希望跳过迭代

for (int index = 0; index <  size; index++) {  
      distanceMatix[row][col] += AdjacencyMatrix[row][index] * 
                                 AdjacencyMatrix[index][col];
}

用手乘以,得到

7 10
15 22
与上述更改相匹配的程序

关于你期望的答案,要么是错误的,要么是输入矩阵错误。您可以验证您的答案

您可以使用通用方法,以免混淆:

int size=5;
int[][]矩阵={
{0, 1, 0, 1, 0},
{1, 0, 1, 0, 1},
{0, 1, 0, 1, 0},
{1, 0, 1, 0, 0},
{0, 1, 0, 0, 0}};
int[][]结果=新的int[size][size];
对于(int row=0;row
//输出
对于(int[]res:result)System.out.println(Arrays.toString(res));
//[2, 0, 2, 0, 1]
//[0, 3, 0, 2, 0]
//[2, 0, 2, 0, 1]
//[0, 2, 0, 2, 0]
//[1, 0, 1, 0, 1]

另见:

7 10
15 22