当前位置: 代码迷 >> J2SE >> java java java,该怎么解决
  详细解决方案

java java java,该怎么解决

热度:134   发布时间:2016-04-24 02:21:58.0
java java java
Java code
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();    }}

只有矩阵相乘不对,为什么呢

------解决方案--------------------
顺序错了
------解决方案--------------------
  相关解决方案