Java 矩阵类 实现加法、减法和乘法

/*
 MatrixDemo.java
 2012-11-7 
*/
import java.util.*;

class Matrix{
	int row , column;
	double[][] matrix;
	//构造函数
	Matrix(double[][] matrix){
		this.row = matrix.length;
		this.column = matrix[0].length;
		this.matrix = new double[this.row][this.column];
		for(int i = 0 ; i < this.row ; i++)
			for(int j = 0 ; j < this.column ; j++)
				this.matrix[i][j] = matrix[i][j];
	}
	//矩阵加法
	Matrix add(Matrix mat2){
		double[][] add_result = new double[this.row][this.column];
		for(int i = 0 ; i < this.row ; i++)
			for(int j = 0 ; j < this.column ; j++)
				add_result[i][j] = this.matrix[i][j]+mat2.matrix[i][j];
		return new Matrix(add_result);
	}
	//矩阵减法
	Matrix minus(Matrix mat2){
		double[][] add_result = new double[this.row][mat2.column];
		for(int i = 0 ; i < this.row ; i++)
			for(int j = 0 ; j < this.column ; j++)
				add_result[i][j] = this.matrix[i][j]-mat2.matrix[i][j];
		return new Matrix(add_result);
	}
	//矩阵乘法
	Matrix multiply(Matrix mat2){
		double[][] multiply_result = new double[this.row][mat2.column];
		for(int i = 0 ; i < this.row ; i++ )
			for(int j = 0 ; j < mat2.column ; j++)
				for(int k = 0 ; k < mat2.row ; k++ ){
					multiply_result[i][j] += this.matrix[i][k]*mat2.matrix[k][j];  
				}
		return new Matrix(multiply_result);
	}
	//打印函数
	void print(){
		for(int i = 0 ; i < this.row ; i++){
			for(int j = 0 ; j < this.column ; j++){
				System.out.print(this.matrix[i][j] + " ");	
			}
			System.out.println();
		}
	}
}



public class MatrixDemo {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int row , column;
		String select , judge;
		
		//第一个矩阵
		System.out.println("输入第一个矩阵的行数和列数:");
		row = sc.nextInt();
		column = sc.nextInt();
		double[][] m = new double[row][column];
		System.out.println("设置第一个矩阵:");
		for(int i = 0 ; i < row ; i++)
			for(int j = 0 ; j < column ; j++)
				m[i][j] = sc.nextDouble();
		Matrix matrix1 = new Matrix(m);
		//第二个矩阵
		System.out.println("输入第二个矩阵的行数和列数:");
		row = sc.nextInt();
		column = sc.nextInt();
		m = new double[row][column];
		System.out.println("设置第二个矩阵:");
		for(int i = 0 ; i < row ; i++)
			for(int j = 0 ; j < column ; j++)
				m[i][j] = sc.nextDouble();
		Matrix matrix2 = new Matrix(m);
		//选择要进行的运算
		while(true){
			System.out.println("选择要进行的运算(+/-/*):");
			select = sc.next();
			if(select.equals("+")){
				if(matrix1.row != matrix2.row || matrix1.column != matrix2.column){
					System.out.println("错误!不符合矩阵运算法则!");
				}
				else{
					Matrix matrix3 = matrix1.add(matrix2);
					System.out.println("矩阵相加 =");
					matrix3.print();
				}
			}
			if(select.equals("-")){
				if(matrix1.row != matrix2.row || matrix1.column != matrix2.column){
					System.out.println("错误!不符合矩阵运算法则!");
				}
				else{
					Matrix matrix3 = matrix1.minus(matrix2);
					System.out.println("矩阵相减 =");
					matrix3.print();
				}
			}
			if(select.equals("*")){
				if(matrix1.column != matrix2.row){
					System.out.println("错误!不符合矩阵运算法则!");
				}
				else
				{
					Matrix matrix3 = matrix1.multiply(matrix2);
					System.out.println("矩阵相乘 =");
					matrix3.print();
				}
			}
			System.out.println("选择其它运算?(Y/N)");
			judge = sc.next();
			if(judge.equals("Y")|judge.equals("y"))
				continue;
			else
				break;
		}
		sc.close();

	}

}
java新手 写的不好
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值