JAVA 矩陣類

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

import java.util.*;
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();
        
}
}
}

}


程序運行結果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章