急求 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
{
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
}
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 += "
";
}
return str;
}
public void add(Matrix b) //this和b两个矩阵相加,改变当前矩阵
{
for (int i=0; i
}
public void minus(Matrix b) //this和b两个矩阵相减,改变当前矩阵
{
for (int i=0; i
}
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
temp.value[i][j]=0;
for(int k=0;k
}
this.value=temp.value;
}
public Matrix transpose() //返回转置矩阵
{
Matrix trans = new Matrix(value[0].length, value.length);
for (int i=0; i
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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯