使用二维数组实现Matrix(矩阵)。
-
定义Matrix(矩阵)类,要求如下:
a) 变量:matrix(int型二维数组),row(行数),column(列数);
b) 方法:实现两个矩阵的乘法,所有方法将返回操作后的结果矩阵。(两个矩阵的乘法:一个m×n的矩阵a(m,n)乘一个n×p的矩阵b(n,p),会得到一个m×p的矩阵c(m,p)。矩阵的行数和列数自定。)
c) 定义构造方法。 -
编写主类,测试Matrix类。包括:构建对象,测试每一个方法,并将测试结果输出到屏幕上。
输入格式:
按下面格式输入行数、列数和矩阵:
矩阵1:
2 3
1 2 3
4 5 6
矩阵2:
3 2
7 8
9 0
1 2
输出格式:
按下面格式输出乘积矩阵,每行后面有一个空格符和回车换行符:
28 14
79 44
输入样例:
2 3
1 2 3
4 5 6
3 2
7 8
9 0
1 2
输出样例:
28 14
79 44
写的可能有些粗糙
主要的思路就是第一个矩阵的第一行每个元素与第二个矩阵第一列的每个元素相乘并求和为新的矩阵第一行第一个的新元素,第二个的新元素为第一个矩阵的第一行每个元素与第二个矩阵第二列的每个元素相乘并求和。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a,b;
a= sc.nextInt();
b= sc.nextInt();
int[][] arr=new int[a][b];
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
arr[i][j]=sc.nextInt();
}
}
Matrix mat1=new Matrix(arr,a,b);
a= sc.nextInt();
b= sc.nextInt();
int[][] arr1=new int[a][b];
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
arr1[i][j]=sc.nextInt();
}
}
Matrix mat2=new Matrix(arr1,a,b);
Matrix out=new Matrix();
out=Matrix.multiply(mat1,mat2);
Matrix.input(out);
}
public static class Matrix{
int r,c;
int[][] matrix;
public Matrix(int[][] matrix, int r, int c) {
this.r = r;
this.c = c;
this.matrix = matrix;
}
public Matrix() {
}
public static Matrix multiply(Matrix m1,Matrix m2){
Matrix mat=new Matrix(new int[m1.r][m2.c], m1.r,m2.c);
for (int i = 0; i < m1.r; i++) {
for (int j = 0; j < m2.c; j++) {
for (int k = 0; k <m1.c; k++) {
mat.matrix[i][j] += m1.matrix[i][k]*m2.matrix[k][j];
}
}
}
return mat;
}
public static void input(Matrix mat){
for (int i = 0; i < mat.r; i++) {
for (int j = 0; j < mat.c; j++) {
System.out.print(mat.matrix[i][j]+" ");
}
System.out.println();
}
}
}
}