永发信息网

急求 JAVA 矩阵布线

答案:1  悬赏:30  手机版
解决时间 2021-01-13 18:09
  • 提问者网友:星軌
  • 2021-01-12 17:17
急求 JAVA 矩阵布线
最佳答案
  • 五星知识达人网友:神也偏爱
  • 2021-01-12 18:19
public class Matrix
{
    private int value[][];                       //存储矩阵元素的二维数组

    public Matrix(int m, int n)                  //构造m行n列的空矩阵
    {
        this.value=new int[m][n]; 
    }
    public Matrix(int n)                         //构造n行n列的空矩阵
    {
        this(n,n); 
    }
    public Matrix()
    {
        this(10,10);
    }
    public Matrix(int mat[][])                   //构造矩阵,由数组mat提供矩阵元素
    {
        this(mat.length,mat[0].length);
        for (int i=0; i            for (int j=0; j               this.value[i][j] = mat[i][j];
    }

    public int get(int i, int j)                 //获得矩阵第i行第j列的元素,O(1)
    {
        return value[i][j];
    }
    public void set(int i, int j, int k)         //设置矩阵第i行第j列的元素,O(1)
    {
        value[i][j]=k;
    }

    public String toString()                     //行主序遍历,访问矩阵全部元素
    {
        String str="";
        for (int i=0; i        {
            for (int j=0; j                str += "  "+value[i][j];
            str += "
";
        }
        return str;
    }

    public void add(Matrix b)                    //this和b两个矩阵相加,改变当前矩阵
    {
        for (int i=0; i            for (int j=0; j               this.value[i][j] += b.value[i][j];
    }
    
    public void minus(Matrix b)                    //this和b两个矩阵相减,改变当前矩阵
    {
        for (int i=0; i            for (int j=0; j               this.value[i][j] -= b.value[i][j];
    }
    
    public void multi(Matrix b)//当前矩阵=当前矩阵*b
    {
     if(this.value[0].length != b.value.length )
     {
     System.out.println("这两个矩阵不能相乘");
     return ;}
     Matrix temp=new Matrix(value.length,b.value[0].length);
     for(int i=0;i     for(int j=0;j     {
     temp.value[i][j]=0;
     for(int k=0;k     temp.value[i][j] +=value[i][k]*b.value[k][j];
     }
     this.value=temp.value;
    }

    public Matrix transpose()                    //返回转置矩阵
    {
        Matrix trans = new Matrix(value[0].length, value.length);
        for (int i=0; i            for (int j=0; j               trans.value[j][i]=this.value[i][j]; 
        return trans;
    }

}

class Matrix_ex
{
    public static void main(String args[])
    {
        int m1[][]={{1,2,3},
                    {4,5,6}};
        Matrix a=new Matrix(m1); 
        int m2[][]={{1,2},
                    {3,4},
                    {5,6}        
         };
        Matrix b=new Matrix(m2);
        System.out.print("Matrix a:
"+a.toString());
        System.out.print("Matrix b:
"+b.toString());
        //a.add(b);
        a.multi(b);
        System.out.print("Matrix a*b:
"+a.toString());
       // System.out.println("a的转置矩阵:
"+a.transpose().toString());
    }


你把结果放到a里了
  你的代码 a[i][j] += (a[i][k] * c[k][j]);
  如果a是2行4列,b是4行8列,结果应该是2行8列
    a[0][7]就不存在,下标超界
应该先构造出一个结果矩阵,算完再赋值给a
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯