输入一个 mn的矩阵 和一个np的矩阵,并初始化, 要求打印出两个矩阵的乘积。
package com.company;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
/**
* @Author:gaoyuan
* @Description:矩阵乘积
* @DateTime:2021/1/6 22:38
**/
public class MatrixMultip {
public static void main(String[] args) {
/***定义并随机初始化数组ints*/
System.out.println("定义并输入矩阵的m和n:");
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
int[][] ints = init(n, m);//调用初始化方法初始数组ints
System.out.println(Arrays.deepToString(ints));
System.out.println("\n");
/************定义并随机初始化数组ints2**************/
System.out.println("定义并输入第二个矩阵的列p:");
int p = sc.nextInt();
int[][] ints2 = init(n,p);//调用初始化方法初始数组ints2
System.out.println(Arrays.deepToString(ints2));
System.out.println("\n");
int[][] z = matrixMultiplication(ints, ints2);
System.out.println("输出乘法后的矩阵");
System.out.println(Arrays.deepToString(z));
}
public static int[][] init(int n,int m){//
Random random=new Random();//初始化随机变量
int[][] arr=new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr[i][j]=random.nextInt(10);//随机数范围0-10
}
}
return arr;
}
public static int[][] matrixMultiplication(int[][] first, int[][] second) {
int m = first.length;//第一个矩阵的行长度
int n = first[0].length;//第一个矩阵的列长度,第二个矩阵的行长度
int p = second[0].length;//第二个矩阵的列长度
int[][] result = new int[m][p];
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
for (int k = 0; k < n; k++) {
result[i][j] = result[i][j] + first[i][k] * second[k][j];
}
}
}
return result;
}
}