我目前正在努力将两个矩阵相加并相乘,并打印结果。我已经正确地做了乘法,至少我确定,但是我不能测试结果,因为我不知道如何打印它。一切看起来都很好,我只需要弄清楚如何打印结果,但一旦我加入矩阵,我就遇到了许多问题。下面是我预先得到的空白代码,用于完成添加、乘法和打印矩阵所需的内容:
public class Matrix {
public static void matrix_add(double[][] a, double[][] b) {
// add matrices
}
public static void matrix_multi(double[][] a, double[][] b) {
// multiply matrices
}
public static void main(String[] args) {
double ar1[][] =
{{.7,.2,.1},
{.3, .6, .1},
{.5, .1, .4}};
double ar2[][] =
{{.2, .3, .5},
{.1, .2, .1},
{.1, .3, .4}};
matrix_add(ar1, ar2);
System.out.println();
matrix_multi(ar1, ar2);
}
}下面是我的结果,之后我确信我的计算对矩阵的相加和相乘是正确的:
public class operationson2Darrays {
public static void matrix_add(double[][] ar1, double[][] ar2) {
// add matrices
double[][] ar4 = new double[ar1.length][ar1[0].length];
for(int i=0;i<ar1.length;i++){
for(int j=0;j<ar1[0].length;j++){
ar4[i][j] = ar1[i][j] + ar2[i][j];
}
}
public static void matrix_multi(double[][] ar1, double[][] ar2) {
// multiply matrices
int i, j, k;
int row1 = ar1.length;
int col1 = ar1[0].length;
int row2 = ar2.length;
int col2 = ar2[0].length;
int[][] ar3 = new int[row1][col2];
for (i = 0; i < row1; i++) {
for (j = 0; j < col2; j++) {
for (k = 0; k < col1; k++) {
ar3[i][j] += ar1[i][k] * ar2[k][j];
}
}
}
}
public static void main(String[] args) {
double ar1[][] =
{{.7, .2, .1},
{.3, .6, .1},
{.5, .1, .4}};
double ar2[][] =
{{.2, .3, .5},
{.1, .2, .1},
{.1, .3, .4}};
matrix_add(ar1, ar2);
System.out.println();
matrix_multi(ar1, ar2);
}
}
}我目前遇到了很多问题,第一个问题是ar1和ar2已经在范围内被定义了。我明白这意味着什么,但我一点也不知道如何解决这个问题。它还期望这一行中的令牌: public静态void (String[] args) {.?我对它应该是什么感到困惑,最后它说这一行期待一个方法调用?:matrix_multi(ar1,ar2);
我开始感到非常困惑,假设我的计算对每一节都是正确的,如果我突然删除添加矩阵,所有问题都消失了。我希望在我收到的这些错误上提供任何帮助,以及如何修复这些错误,以及如何打印矩阵的结果。
发布于 2018-03-28 19:00:41
您应该让您的方法返回新的2D数组,以便以后可以对数组执行一些操作,例如打印它。另外,您希望您的乘法2D数组是一个双数组,而不是一个int数组,因为您正在将两个双数组相乘。最后,您可以将新创建的数组传递到打印数组内容的方法中。
public static double[][] matrix_add(double[][] ar1, double[][] ar2) {
// add matrices
double[][] ar4 = new double[ar1.length][ar1[0].length];
for(int i=0;i<ar1.length;i++){
for(int j=0;j<ar1[0].length;j++){
ar4[i][j] = ar1[i][j] + ar2[i][j];
}
}
return ar4;
}
public static double[][] matrix_multi(double[][] ar1, double[][] ar2) {
// multiply matrices
int i, j, k;
int row1 = ar1.length;
int col1 = ar1[0].length;
int row2 = ar2.length;
int col2 = ar2[0].length;
double[][] ar3 = new double[row1][col2];
for (i = 0; i < row1; i++) {
for (j = 0; j < col2; j++) {
for (k = 0; k < col1; k++) {
ar3[i][j] += ar1[i][k] * ar2[k][j];
}
}
}
return ar3;
}
public static void print2DArray(double[][] ar)
{
for(int i=0;i<ar.length;i++){
for(int j=0;j<ar[0].length;j++){
System.out.print(ar[i][j] + " ");
}
System.out.println();
}
}
public static void main(String[] args) {
double ar1[][] =
{{.7, .2, .1},
{.3, .6, .1},
{.5, .1, .4}};
double ar2[][] =
{{.2, .3, .5},
{.1, .2, .1},
{.1, .3, .4}};
double[][] arAdd = matrix_add(ar1, ar2);
print2DArray(arAdd);
System.out.println();
double[][] arMulti = matrix_multi(ar1, ar2);
print2DArray(arMulti);
}输出
0.8999999999999999 0.5 0.6
0.4 0.8 0.2
0.6 0.4 0.8
0.16999999999999998 0.28 0.41000000000000003
0.13 0.24 0.25
0.15000000000000002 0.29 0.42000000000000004 https://stackoverflow.com/questions/49541872
复制相似问题