我已经得到了以下代码,我试图让它将数组a乘以数组b并生成数组c。我在这里浏览了几个问题,由于某种原因,我无法获得正确的结果,我相信因为它没有将正确的指数相互增加。任何帮助将不胜感激,因为我仍然试图了解数组乘法是如何工作的。这是代码:
class Main
{
public static void main (String[] args)
{
int[][]a =
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
//print array a
};
for(int i = 0; i < a[0].length-1; i++)
{
for(int j = 0; j < a[0].length; j++)
{
System.out.print(a[i][j] + " ");
}
System.out.println();
}
int[][]b =
{
{-1,-2,-3},
{-4,-5,-6},
{-7,-8,-9},
{-10,-11,-12},
};
System.out.println();
//print array b
for(int i = 0; i < b.length; i++)
{
for(int j = 0; j < b.length-1; j++)
{
System.out.print(b[i][j] + " ");
}
System.out.println();
}
System.out.println();
int[][]c = new int[a.length][b[0].length];
if(b.length == a[0].length)
{
for(int i = 0; i < a.length; i++)
{
for (int j = 0; j < b[0].length; j++)
{
for (int k = 0; k < a[0].length; k++)
{
c[i][j] = a[i][k]*b[k][j];
}
}
}
}
else
{
System.out.println("Dimension requirements not satisfied for accurate calculation");
}
for(int i = 0; i < c.length; i++)
{
for(int j = 0; j < c.length; j++)
{
System.out.print(c[i][j] + " ");
}
System.out.println();
}
}
}
答案 0 :(得分:0)
将c[i][j] = a[i][k]*b[k][j];
更改为c[i][j] += a[i][k]*b[k][j];
答案 1 :(得分:0)
@Jeffrey Chen的答案是正确的,因为在矩阵乘法中,第一个矩阵的每一行乘以第二个矩阵的每一列
在你的情况下,矩阵a的第1行是1,2,3,4 基质b的第1列是-1,-4,-7,-10
所以答案是(1 * -1)+(2 * -4)+(3 * -7)+(4 * -10) = -1-8-21-40 = -70
然后矩阵的第一行乘以矩阵b的第二列
(1 * -2)+(2 * -5)+(3 * -8)+(4 * -11) = -2-10-24-44 = -80
等等
所以以下是正确的
c[i][j] += a[i][k] * b[k][j];