关键在于实现算法,所以代码都写在了main程序中,程序代码如下:
package chapter02;
import java.util.Arrays;
/*
* 矩阵乘法的实现(简单版)
*/
public class CH02_03 {
public static void main(String[] args) {
int[][] arr1 =
{
{3, 3, 3},
{5, 5, 5}
};
int[][] arr2 =
{
{1, 2},
{3, 4},
{5, 6}
};
//定义并填充存放结果的数组
int[][] arrResult = new int[2][2];
for(int i = 0; i < 2; i++){
Arrays.fill(arrResult[i], 0);
}
//输出矩阵乘法前的结果数组
for(int i = 0; i < 2; i++){
System.out.println(Arrays.toString(arrResult[i]));
}
//计算矩阵乘法
for(int i = 0; i < arr1.length; i++){
//外循环,arr1的第i行
for(int j = 0; j < arr1.length; j++){
//内循环,arr2的第j列,这里也用arr1.length,是因为arr1的行数和arr2的列数是一致的
//arrResult[i][j]即为结果
for(int k = 0; k < arr2.length; k++){
//内内循环,k值用来控制相乘的元素的索引
//表现为,k控制arr1横向移动,arr2纵向移动
//即arr1[i][k],arr2[k][j]
arrResult[i][j] += arr1[i][k]*arr2[k][j];
}
}
}
//输出矩阵乘法后的结果数组
for(int i = 0; i < arrResult.length; i++){
System.out.println(Arrays.toString(arrResult[i]));
}
}
}
运行结果如下:
[0, 0] [0, 0] [27, 36] [45, 60]