import java.io.*;
import java.util.*;
public class haha{
public static void main(String[] args) throws Exception{
int m,n; //save row and col
int [][] matrix; //save matrix
Scanner in=new Scanner(System.in);
//create matrix A
System.out.println("input matrix A 's row and col");
m=in.nextInt();
n=in.nextInt();
matrix=new int[m][n];
System.out.println("input item of matrix A");
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
matrix[i][j]=in.nextInt();
Matrix A=new Matrix(matrix);
A.print();
//create matrix B
System.out.println("input matrix B 's row and col");
m=in.nextInt();
n=in.nextInt();
matrix=new int[m][n];
System.out.println("input item of matrix B");
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
matrix[i][j]=in.nextInt();
Matrix B=new Matrix(matrix);
B.print();
while(true){
System.out.println("1.A+B");
System.out.println("2.A-B");
System.out.println("3.A*B");
System.out.println("4.qu A rowX colY");
System.out.println("5.set A rowX colY");
System.out.println("6.get A row col");
System.out.println("7.quit");
int choice=0;
System.out.print("input you choice: ");
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
choice=Integer.parseInt(br.readLine());
}catch(IOException ex){}
Matrix C=new Matrix();
switch(choice){
case 1:C=A.plus(B);C.print();break;
case 2:C=A.minus(B);C.print();break;
case 3:C=A.times(B);C.print();break;
case 4:System.out.println("input row,col");
m=in.nextInt();n=in.nextInt();
A.getItem(m,n);break;
case 5:System.out.println("input row,col,x");
m=in.nextInt();n=in.nextInt();int x=in.nextInt();
A.setItem(m,n,x);A.print();break;
case 6:A.getXY();break;
case 7:System.exit(1);
default:System.out.println("Choice Error!!");break;
}
}
}
}
class Matrix{
private int row;
private int col;
private int [][] matrix;
Matrix(){}
Matrix(int r,int c){
row=r;
col=c;
matrix=new int[r][c];
}
Matrix(int[][] m,int r,int c){
row=r;
col=c;
matrix=m;
}
Matrix(int[][] m){
row=m.length;
col=m[0].length;
matrix=m;
}
int getItem(int r,int c){
if(r<=matrix.length&&c<=matrix[0].length)
System.out.print(matrix[r-1][c-1]);
else
System.out.println("input error");
System.exit(1);
return 0;
}
void setItem(int r,int c,int x){
if(r>matrix.length||c>matrix[0].length)
System.out.println("input error");
else
matrix[r-1][c-1]=x;
}
void getXY(){
System.out.println("the row of matrix is "+matrix.length);
System.out.println("the col of matrix is "+matrix[0].length);
}
Matrix plus(Matrix b){
if((row!=b.row)||(col!=b.col)){
System.out.println("A can't plus B");
System.exit(1);
}
Matrix tmp=new Matrix(row,col);
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
tmp.matrix[i][j]=matrix[i][j]+b.matrix[i][j];
return tmp;
}
Matrix minus(Matrix b){
if((row!=b.row)||(col!=b.col)){
System.out.println("A can't minus B");
System.exit(1);
}
Matrix tmp=new Matrix(row,col);
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
tmp.matrix[i][j]=matrix[i][j]-b.matrix[i][j];
return tmp;
}
Matrix times(Matrix b){
if(col!=b.row){
System.out.println("A cannot times B");
System.exit(1);
}
Matrix tmp=new Matrix(row,b.col);
for(int i=0;i<row;i++)
for(int j=0;j<b.col;j++){
tmp.matrix[i][j]=0;
for(int k=0;k<col;k++)
tmp.matrix[i][j]+=matrix[i][k]*b.matrix[k][j];
}
return tmp;
}
void print(){
for(int i = 0; i < row; i++){
System.out.print(matrix[i][0]);
for(int j = 1; j < col; j++)
System.out.print(" " + matrix[i][j]);
System.out.println(""); System.out.println("");
}
}
}
java通过矩阵类实现矩阵的加减乘运算
最新推荐文章于 2024-08-19 18:32:43 发布