利用二维数组实现一个矩阵类:Matrix
2013-10-20 13:45
405 查看
利用二维数组实现一个矩阵类:Matrix。要求提供以下操作:
(1)set(int row, int col, double value):将第row行第col列的元素赋值为value;
(2)get(int row,int col):取第row行第col列的元素;
(3)width():返回矩阵的列数;
(4)height():返回矩阵的行数;
(5)Matrix add(Matrix b):返回当前矩阵与矩阵b相加后的结果矩阵;
(6)Matrix multiply(Matrix b):返回当前矩阵与矩阵b相乘后的结果矩阵。
(7)print():打印出当前矩阵的值。
(1)set(int row, int col, double value):将第row行第col列的元素赋值为value;
(2)get(int row,int col):取第row行第col列的元素;
(3)width():返回矩阵的列数;
(4)height():返回矩阵的行数;
(5)Matrix add(Matrix b):返回当前矩阵与矩阵b相加后的结果矩阵;
(6)Matrix multiply(Matrix b):返回当前矩阵与矩阵b相乘后的结果矩阵。
(7)print():打印出当前矩阵的值。
import java.util.*; public class Matrix { private static final int ROW=100; private static final int COL=100; private int r; private int c; private double matrix[][]; public Matrix()//构造函数,初始化 { matrix=new double[ROW][COL];//默认行列分配100空间; this.r=ROW; this.c=COL; for(int i=0;i<ROW;i++) for(int j=0;j<COL;j++) matrix[i][j]=0; } public Matrix(int row,int col)//初始化 { matrix=new double[row][col]; this.r=row; this.c=col; for(int i=0;i<row;i++) for(int j=0;j<col;j++) matrix[i][j]=0; } boolean set(int row, int col, double value) { if(row<0||row>this.r||col<0||col>this.r)//判断位置是否合法; return false; else { matrix[row][col]=value; return true; } } double get(int row,int col) { return matrix[row][col]; } int width() { return this.c; } int height() { return this.r; } Matrix add(Matrix b)//返回相加后的数组 { if(this.r!=b.r||this.c!=b.c) { System.out.println("ERROR!"); return null; } Matrix m=new Matrix(r,c); for(int i=0;i<r;i++) for(int j=0;j<c;j++) m.matrix[i][j]=this.matrix[i][j]+b.matrix[i][j]; return m; } Matrix multiply(Matrix b) { if(this.r!=b.c)//如果两个矩阵不服和相乘条件,输出错误; { System.out.println("ERORR!"); return null; } int r=this.r; int c=b.c; Matrix m=new Matrix(r,c); for(int i=0;i<r;i++)//矩阵的乘法; for(int j=0;j<c;j++) { double s=0; for(int i1=0;i1<r;i1++) for(int j1=0;j1<c;j1++) s=s+this.matrix[i1][j1]*b.matrix[j1][i1]; m.matrix[i][j]=s; } return m; } void print() { for(int i=0;i<this.r;i++) { for(int j=0;j<this.c;j++) System.out.print(matrix[i][j]+" "); System.out.println(); } } public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); System.out.print("请输入第一个矩阵的行和列:");//输入第一个矩阵 int r=sc.nextInt(); int c=sc.nextInt(); Matrix ma=new Matrix(r,c); double num; for(int i=0;i<r;i++) for(int j=0;j<c;j++) { System.out.print("请输入第"+(i+1)+"行,第"+(j+1)+"列的元素值:"); num=sc.nextDouble(); ma.set(i,j,num); } System.out.println("第一个矩阵是"+ma.height()+"行,"+ma.width()+"列的矩阵:"); ma.print(); System.out.print("请输入第二个矩阵的行和列:");//输入第二个矩阵; r=sc.nextInt(); c=sc.nextInt(); Matrix mb=new Matrix(r,c); for(int i=0;i<r;i++) for(int j=0;j<c;j++) { System.out.print("请输入第"+(i+1)+"行,第"+(j+1)+"列的元素值:"); num=sc.nextDouble(); mb.set(i,j,num); } System.out.println("第二个矩阵是"+mb.height()+"行,"+mb.width()+"列的矩阵:"); mb.print(); Matrix mc=ma.add(mb); System.out.println("两个矩阵相加是:"); mc.print(); mc=ma.multiply(mb); System.out.println("两个矩阵相乘是:"); mc.print(); } }
相关文章推荐
- 任意定义一个二维数组,实现矩阵的转置——java
- 定义一个Matrix类,实现矩阵的加法和乘法
- 【算法】 输入n 输出一个n*n的zigzag矩阵 利用c++实现
- 利用page rank,hits算法实现的一个简单的文本摘要系统
- Unity3D学习(三):利用NGUI实现一个简单的左右摇杆
- 利用Qt来实现一个时钟小程序
- 利用全注解实现ssh的一个完整例子
- PHP利用文件锁实现只运行一个实例
- java实现在二维数组中查找一个数
- 利用tensorflow 一步一步实现一个简单神经网络,线性回归
- 利用反射实现一个Java文件书写多个Servlet,无框架
- 将一个LIST拆分成一个子LIST元素个数为n的二维数组(python实现)
- 利用回调函数实现的一个简单确认对话框。
- 建立一个矩阵类Matrix,存储一个4*4的矩阵并能在矩阵中查找某数
- 利用python实现strassen算法(2<=n,m)A,B为任意矩阵阶数局限于2的n次方
- 如何利用反射机制实现前台页面共用一个servlet文件
- 利用ANTLR4实现一个简单的四则运算计算器
- 利用avalon 实现一个简单的成绩单
- 利用formdata实现一个input 上传类型 上传多个图片
- 开辟一个二维数组,有10*8个元素,用随机数填充,按照下面的方法用函数实现查找一个数是否存在