java通过矩阵类实现矩阵的加减乘运算

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(""); 
        	}	  
    	} 
}

	

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值