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();
}
}
}
}
程序運行結果: