您的位置:首页 > 编程语言 > Java开发

利用二维数组实现一个矩阵类: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():打印出当前矩阵的值。

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息