-
定义Matrix(矩阵)类,要求如下:
a) 静态变量:static Scanner reader=new Scanner(System.in);b) 变量:row(行数),column(列数),matrix(int型二维数组);
c) 根据需求定义构造方法;
d) 方法:
1) inputMatrix方法:从键盘读入行数和列数,创建矩阵的二维数组,然后从键盘读入矩阵的元素值; 2) multiply方法:两个矩阵相乘,方法将返积矩阵; 3) display方法:将矩阵输出到屏幕
- 编写Main类,测试Matrix类: 从键盘读入行数、列数和元素值,分别构建2个Matrix对象,将2个Matrix对象相乘,并将乘积矩阵输出到屏幕上。
输入格式:
2 3
1 2 3
4 5 6
输出格式:
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) {
matrix m1=new matrix();
m1.inputMatrix();
matrix m2=new matrix();
m2.inputMatrix();
//创建两个matrix对象
matrix m3= m1.multiply(m2);//两个matrix对象相乘,结果赋给matrix对象m3
m3.display();//输出
}
}
class matrix{
int row,column;//行,列
int[][] m;//存储矩阵的二维数组
static Scanner reader=new Scanner(System.in);//为后面输入做准备
matrix(){
}
matrix(int a,int b,int[][] c){//构造方法,将在multiply()方法里使用
row=a;
column=b;
m=c;
}
public void inputMatrix(){//输入矩阵
row=reader.nextInt();
column=reader.nextInt();
m=new int [row][column];
for(int i=0;i<row;i++) {
for(int j=0;j<column;j++) {
m[i][j]=reader.nextInt();
}
}
}
public matrix multiply(matrix m2){//矩阵的乘法
int[][] a=new int[row][m2.column];//用于存储结果的二维数组
for(int i=0;i<row;i++) {//循环第一个矩阵的每一行
for(int k=0;k<m2.column;k++) {//循环第二个矩阵的每一列
for(int j=0;j<column;j++) {//对应具体行,具体列的每一个数,相乘并累加。
a[i][k]=a[i][k]+m[i][j]*m2.m[j][k];
}
}
}
matrix m3=new matrix(row,m2.column,a);//构造结果矩阵并返回
return m3;
}
public void display() {//输出,注意格式,不是以空格结尾
for(int i=0;i<row;i++) {
for(int j=0;j<column;j++) {
if(j==0)
System.out.printf("%d",m[i][j]);
else
System.out.printf(" %d",m[i][j]);
}
System.out.println();
}
}
}
满意的话就赏个赞叭 ->__<-