Description |
设计一个矩阵类,类中的方法能够对矩阵进行加法、减法和乘法运算,定义矩阵类对象,然后根据输入进行计算,并输出结果。
|
Input |
输入不定组数的多组数据,每组由运算字符串("ADD"表示矩阵相加,"SUB"表示相减,"MUL"表示相乘)和用于确定矩阵的行数、列数的两个或三个整数(对于加法和减法,是两个整数,表示矩阵的行数和列数;而乘法则是三个整数,中间的整数是前一个矩阵的列数,也是后一个矩阵的行数),以及两个矩阵的具体数据组成。 |
Output |
输出结果矩阵,每一行为矩阵的每一行数据,中间用一个空格分隔。 参见样例 |
Sample Input |
ADD 2 2 1 1 2 2 3 3 4 4 MUL 1 2 1 1 2 2 1 |
Sample Output |
4 4 6 6 4 |
class Matrix{
private int row;
private int column;
private int [][] matrix;
Matrix(int r,int c){
row=r;
column=c;
matrix=new int[r][c];
}
Matrix(int[][] m,int r,int c){
row=r;
column=c;
matrix=m;
}
Matrix(int[][] m){
row=m.length;
column=m[0].length;
matrix=m;
}
public int getrow() {
return row;
}
public int getcolumn() {
return column;
}
// public void Matrix (int row ,int column) {
// this.row = row;
// this.column = column;
// }
public Matrix ADD(Matrix m) {
Matrix tmp = new Matrix(row,column);
for(int i=0;i<row;i++) {
for(int j=0;j<column;j++) {
tmp.matrix[i][j]=matrix[i][j]+m.matrix[i][j];
}
}
return tmp;
}
public Matrix SUB(Matrix m) {
Matrix tmp = new Matrix(row,column);
for(int i=0;i<row;i++) {
for(int j=0;j<column;j++) {
tmp.matrix[i][j]=matrix[i][j]-m.matrix[i][j];
}
}
return tmp;
}
public Matrix MUL(Matrix m) {
Matrix tmp=new Matrix(row,m.column);
for(int i=0;i<row;i++)
for(int j=0;j<m.column;j++){
tmp.matrix[i][j]=0;
for(int k=0;k<column;k++)
tmp.matrix[i][j]+=matrix[i][k]*m.matrix[k][j];
}
return tmp;
}
public void print() {
for(int i=0;i<row;i++) {
//System.out.print(matrix[i][0]);
for(int j=0;j<column;j++) {
if(j==0) {
System.out.print(matrix[i][j]);
}
else
System.out.print(" "+matrix[i][j]);
}
System.out.println("");
}
}
}
public class Main {
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
String x;
int m,n,k;
int matrix1[][];
int matrix2[][];
int matrix3[][];
while(cin.hasNext())
{
x = cin.next();
if(x.charAt(0)=='A')
{
m = cin.nextInt();
n = cin.nextInt();
matrix1=new int[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
matrix1[i][j]=cin.nextInt();
Matrix A=new Matrix(matrix1);
matrix2=new int[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
matrix2[i][j]=cin.nextInt();
Matrix B=new Matrix(matrix2);
matrix3=new int[m][n];
Matrix C=new Matrix(matrix3);
C=A.ADD(B);
C.print();
}
if(x.charAt(0)=='M')
{
m=cin.nextInt();
n=cin.nextInt();
k=cin.nextInt();
matrix1=new int[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
matrix1[i][j]=cin.nextInt();
Matrix A=new Matrix(matrix1);
matrix2=new int[n][k];
for(int i=0;i<n;i++)
for(int j=0;j<k;j++)
matrix2[i][j]=cin.nextInt();
Matrix B=new Matrix(matrix2);
matrix3=new int[m][m];
Matrix C=new Matrix(matrix3);
C=A.MUL(B);
C.print();
}
if(x.charAt(0)=='S')
{
m = cin.nextInt();
n = cin.nextInt();
matrix1=new int[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
matrix1[i][j]=cin.nextInt();
Matrix A=new Matrix(matrix1);
matrix2=new int[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
matrix2[i][j]=cin.nextInt();
Matrix B=new Matrix(matrix2);
matrix3=new int[m][n];
Matrix C=new Matrix(matrix3);
C=A.SUB(B);
C.print();
}
}
}
}
程序运行结果: