日期:2014-05-20 浏览次数:20734 次
public class Matrix { private Object[][] matrix; private int height,width;//行,列 Matrix(int h,int w){ height=h;//矩阵行数 width=w;//矩阵列数 matrix=new Object[height][width]; } public void set(int row,int col,Object value) { if(row>height||row<=0||col<=0||col>width) { System.out.println("此项不存在!"); } matrix[row-1][col-1]=value; } public Object get(int row,int col) { return matrix[row-1][col-1]; } public int width(){//返回矩阵的列 return width; } public int height(){//返回矩阵的行 return height; } public Matrix add(Matrix b)//矩阵相加 { Matrix a=new Matrix(height,width); int i,j; if(height!=b.height()||width!=b.width())//矩阵不符合相加的要求 { return null; } else { for(i=0;i<height;i++) { for(j=0;j<width;j++) { String m=matrix[i][j].toString();//将Object类型转换为字符型 String n=b.matrix[i][j].toString(); int value=Integer.parseInt(m)+Integer.parseInt(n);//将字符型转换为整形 a.set(i+1,j+1,value);//插入矩阵中 } } return a; } } public Matrix multiply(Matrix b)//矩阵相乘 { Matrix a=new Matrix(height,width); if(width!=b.height())//不符合矩阵相乘的条件 { return null; } else { for(int i=0;i<height;i++) { for(int j=0;j<b.width();j++) { int value=0; for(int k=0;k<width;k++) { String m=matrix[i][k].toString(); String n=b.matrix[k][j].toString(); value+=Integer.parseInt(m)*Integer.parseInt(n); } a.set(i+1,j+1,value); } } return a; } } public void print() {// 打印出当前矩阵的值 if(width!=0||height!=0){ for (int i = 0; i < height; i++) { System.out.print("|\t"); for (int j = 0; j < width; j++) { System.out.print(matrix[i][j] + "\t"); } System.out.print("|\n"); } } else { System.out.println("该矩阵不存在。"); } } public static void main(String[] args){ Matrix a=new Matrix(3,2);//3行2列的矩阵 a.set(1,1,1); a.set(1,2,2); a.set(2,1,3); a.set(2,2,4); a.set(3,1,5); a.set(3,2,6); System.out.println("矩阵a为:"); a.print(); System.out.println("矩阵的行为:"+a.height()+","+"矩阵的列为:"+a.width()); System.out.println("矩阵的第一行第二列为:"+a.get(1, 2)); System.out.println("矩阵b为:"); Matrix b=new Matrix(3,2); b.set(1,1,6); b.set(1,2,5); b.set(2,1,4); b.set(2,2,3); b.set(3,1,2); b.set(3,2,1); b.print(); System.out.println("矩阵a+b为:"); if(a.add(b)==null) { System.out.println("两个矩阵不符合相加的条件!"); } a.add(b).print(); System.out.println("矩阵c为:"); Matrix c=new Matrix(2,3); c.set(1,1,1); c.set(1,2,2); c.set(1,3,3); c.set(2,1,4); c.set(2,2,5); c.set(2,3,6); c.print(); System.out.println("矩阵a*c为:"); a.multiply(c).print(); } }