【问题标题】:Java Matrices ArraysJava 矩阵数组
【发布时间】:2012-11-21 14:02:11
【问题描述】:

这个程序添加了两个 3x3 矩阵。它编译并运行,但输出,而不是:

1.0  2.0  3.0       0.0  2.0  4.0       1.0  4.0  7.0
4.0  5.0  6.0   +   1.0  4.5  2.2   =   5.0  9.5  8.2
7.0  8.0  9.0       1.1  4.3  5.2       8.1  12.3 14.2

它产生:

1.0  2.0  3.0       0.0  2.0  4.0       0.0  0.0  0.0
4.0  5.0  6.0   +   1.0  4.5  2.2   =   0.0  0.0  0.0
7.0  8.0  9.0       1.1  4.3  5.2       0.0  0.0  0.0

我不确定为什么输出显示为全零?程序中的数学对我来说“似乎”是正确的......我在这里遗漏了什么吗?

import java.util.Scanner;

public class AddMatrices{

public static void main(String[] args){

    Scanner input = new Scanner(System.in);

    int N = 3;

    //get the users input and store it in the two arrays
    System.out.println("\nEnter matrix1: \n");

    //declare 2 arrays with the appropriate number of rows and columns in 
    //them to store the numbers in each matrix.
    //this is the first one.
    double[][] matrix1 = new double[N][N];

    for (int i = 0; i < matrix1.length; i++) {
        for (int j = 0; j < matrix1[i].length; j++) {
            matrix1[i][j] = input.nextDouble();
        }
    }

    //get the users input and store it in the two arrays
    System.out.println("\nEnter matrix2: \n");

    //declare 2 arrays with the appropriate number of rows and columns in 
    //them to store the numbers in each matrix.
    //this is the second one.
    double[][] matrix2 = new double[3][3];

    for (int i = 0; i < matrix1.length; i++) {
        for (int j = 0; j < matrix1[i].length; j++) {
            matrix2[i][j] = input.nextDouble();
        }
    }


    //call the addMatrix method and pass it the two arrays
    double[][] resultingMatrix = addMatrix(matrix1, matrix2);
    System.out.println("The addition of the matrices is ");



}//end of main method


//write the addMatrix method to add the two matrices and display the result

public static double[][] addMatrix(double[][] m1, double[][] m2){

    double[][] result = new double[m1.length][m1[0].length];

    for (int i = 0; i < result.length; i++) {
        for (int j = 0; j < result[0].length; j++){
            m1[i][j] += m2[i][j];
        }
    }

    for (int i = 0; i < m1.length; i++) {
        char plus = '+';
        for (int j = 0; j < m1[0].length; j++) {
            System.out.print("  " + m1[i][j]);
        }

        if (i == m1.length / 2)
            System.out.print("  " + plus + "  ");
        else {
            System.out.print("  ");
        }

        for (int j = 0; j < m2[0].length; j++) {
            System.out.print("  " + m2[i][j]);
        }

        if (i == m1.length / 2)
            System.out.print("  =  ");
        else {
            System.out.print("  ");
        }

        for (int j = 0; j < result[0].length; j++) {
            System.out.print("  " + result[i][j]);
        }
        System.out.println();
    }
return result;
}//end of add matrices

}//end of class

【问题讨论】:

  • 区分逻辑和表示。首先将矩阵添加到内存中的新矩阵中,然后打印结果。将使调试您的代码更加容易。哦,调试器可以让你了解你的逻辑是如何工作的。

标签: java multidimensional-array matrix add


【解决方案1】:

您将添加的值设置为 m1 而不是结果。在您的第一个双 for 循环中,只需执行以下操作:

result[i][j] = m1[i][j]+m2[i][j];

【讨论】:

  • 是的,这现在更有意义了。谢谢!
【解决方案2】:

我认为您永远不会将结果分配给变量 results

你应该改变

m1[i][j] += m2[i][j];

result[i][j]=m1[i][j] + m2[i][j];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-04
    • 2015-10-13
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    相关资源
    最近更新 更多