Matrix矩阵类

这篇博客介绍了如何使用Java编写一个矩阵类Matrix,包括设置矩阵大小、初始化矩阵、计算矩阵加法和乘法的方法。Matrix类还包含了打印矩阵的功能。文章通过样例输入输出展示了矩阵加法和乘法的计算规则,并提供了相关问题的链接。

题目描述

编写矩阵类Matrix,包含以下成员变量:整数变量 row_size, col_size,  分别表示矩阵的行数与列数,整数的二维数组 values[][],表示一个整数矩阵. 包含以下成员方法:

void setMatrix(int m, int n)方法: 参变量 m,n分别赋值给成员变量 row_size, col_size,  并由键盘输入,完成 values  数组元素的赋值。
void setMatrix(int m, int n, int v[][]) 方法: 参变量 m,n分别赋值给成员变量 row_size, col_size, 并将参变量 的 v数组 赋值给 成员变量 values 数组。
Matrix add(Matrix m),方法:求当前对象对应的矩阵 与 参变量 m 矩阵的 和矩阵,作为返回值返回。
Matirx mul(Matrix m) 方法:求当前对象对应的矩阵 与 参变量 m 矩阵的 积矩阵,作为返回值返回。
void print() 方法:完成当前对象的 成员变量 values数组 的输出;
Main类已经编写好如下:

import java.util.*;
public class Main
{
     public static void main(String[] args)
     {
     	Matrix m1 = new Matrix();
     	int v1[][] = {{1,0}, {0,1},{1,1}};
     	m1.setMatrix(3,2,v1);
     	int v2[][] = {{1,2}, {3,4},{5,6}};
     	Matrix m2 = new Matrix();
     	m2.setMatrix(3,2,v2);
     	Matrix m3 = m1.add(m2);
     	m3.print(); //输出m1与m2两个矩阵的和矩阵
     	System.out.println();
     	Matrix m4 = new Matrix();
     	m4.setMatrix(2,3);  //完成m4矩阵的初始化,其间需要从键盘输入2行3列的整数矩阵
     	Matrix m5 = m1.mul(m4);
     	m5.print(); //输出m1与m4两个矩阵的积矩阵
     }
}

输入

输入一个2行3列的整数矩阵(   m4.setMatrix(2,3) 语句 )

输出

先输出m1+m2 矩阵,再输出m1*m4矩阵;行内整数用一个空格隔开;两个矩阵间包含一个空行。

样例输入

1 1 1
1 1 1

样例输出

2 2
3 5
6 7

1 1 1
1 1 1
2 2 2

提示

两个矩阵的和 为 两个矩阵对应元素的和 组成的矩阵;
两个矩阵的积的计算规则,请查看Problem 1063:

Sign Up Loginicon-default.png?t=M3C8http://www.gdufoj.space/problem.php?id=1063

//定义Matrix类
class Matrix{
	//声明成员变量
	public int row_size;
	public int col_size;
	public int values[][];
	//成员方法
	public void setMatrix(int m,int n) {
		Scanner reader = new Scanner(System.in);
		row_size = m;
		col_size = n;
		this.values = new int[row_size][col_size];
		for(int i=0;i<row_size;i++) {
			for(int j=0;j<col_size;j++) {
				values[i][j] = reader.nextInt();
			}
		}
	}
	public void setMatrix(int m,int n,int v[][]) {
		row_size = m;
		col_size = n;
		values = v;
	}
	public Matrix add(Matrix m) {
		Matrix he = new Matrix();
		he.row_size = this.row_size;
		he.col_size = this.col_size;
		he.values = new int[row_size][col_size];
		for(int i=0;i<row_size;i++){
			for(int j=0;j<col_size;j++){
				he.values[i][j] = this.values[i][j]+m.values[i][j];
			}
		}
		return he;
	}
	public Matrix mul(Matrix m) {
		Matrix ji = new Matrix();
		ji.row_size = this.row_size;
		ji.col_size = m.col_size;
		ji.values = new int[ji.row_size][ji.col_size];
		for(int i=0;i<ji.row_size;i++){
			for(int j=0;j<ji.col_size;j++){
				for(int k=0;k<m.row_size;k++){
					ji.values[i][j] += this.values[i][k]*m.values[k][j];
				}
			}
		}
		return ji;
	}
	public void print() {
		for(int i=0;i<row_size;i++) {
			for(int j=0;j<col_size;j++) {
				System.out.print(values[i][j]+" ");
			}
			System.out.println();
		}
	}
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值