Java 为什么我的2D数组乘法输出不正确?
我必须通过一个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
公共类图{
私有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