作业帮 > 综合 > 作业

JAVA程序设计:设A为m行n列矩阵,B为n行k列矩阵,C为m行k列矩阵.

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 09:46:22
JAVA程序设计:设A为m行n列矩阵,B为n行k列矩阵,C为m行k列矩阵.
用JAVA设计矩阵乘法程序,能完成C=A*B的操作.m、n与k用define定义为常量,其值由用户自定义.
public class Matrix {
private int m,n;
private double[][] matrix;
public Matrix(int m,int n) {
this.n = n;
this.m = m;
if (n == 0 || m == 0) {
throw new RuntimeException();
}
matrix = new double[m][n];
}
public void init(double...value) {
if (value.length != m * n) {
throw new RuntimeException();
}
for (int i = 0,a = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = value[a];
a++;
}
}
}
public Matrix mul(Matrix x) {
if (n != x.m) {
throw new RuntimeException();
}
Matrix c = new Matrix(n,x.m);
for (int i1 = 0; i1 < m; i1++) {
for (int i3 = 0; i3 < x.n; i3++) {
for (int i2 = 0; i2 < n; i2++) {
c.matrix[i1][i3] += matrix[i1][i2] * x.matrix[i2][i3];
}
}
}
return c;
}
public String toString() {
StringBuffer s = new StringBuffer();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
s.append(matrix[i][j] + " ");
}
s.append("\n");
}
return s.toString();
}
public static void main(String[] args) {
Matrix a = new Matrix(2,2);
Matrix b = new Matrix(2,2);
a.init(new double[] { 1,7,8,3 });
b.init(new double[] { 2,5,6,4 });
Matrix c = a.mul(b);
System.out.println(c);
}
}
再问: 麻烦一下帮我把m、n、k用define定义为常量,最后输出C=A*B啊,我是真的不会这题,O(∩_∩)O谢谢啦
再答: java里面没有define关键字,定义常量用static final完成 public static final int m=2; public static final int n=2; public static final int k=2; 这3句加在public class Matrix {这一句下面,main函数里 Matrix a = new Matrix(2, 2); Matrix b = new Matrix(2, 2); 改为 Matrix a = new Matrix(m, n); Matrix b = new Matrix(n, k);