Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二维矩阵的加法和乘法_Java_Arrays_Matrix - Fatal编程技术网

Java 二维矩阵的加法和乘法

Java 二维矩阵的加法和乘法,java,arrays,matrix,Java,Arrays,Matrix,我对我目前的一门CS课程的家庭作业深感困惑 问题是创建一种方法,将两个3x3矩阵相乘。以及创建另一个方法来添加两个3x3矩阵,然后组合这两个矩阵并显示输出。共有3个矩阵,所有用户输入 矩阵1:(1,2,3,4,5,6,7,8,9) 矩阵2:(9,8,7,6,5,4,3,2,1) 矩阵3:(0,2,4,1,4.5,2.2,1.1,4.3,5.2) 结果输出:(30,26,22,85,73.5,56.2,139.1118.3,95.2) 在我们给出的输出中,矩阵1*矩阵2+矩阵3=Ouput 我的主

我对我目前的一门CS课程的家庭作业深感困惑

问题是创建一种方法,将两个3x3矩阵相乘。以及创建另一个方法来添加两个3x3矩阵,然后组合这两个矩阵并显示输出。共有3个矩阵,所有用户输入

矩阵1:(1,2,3,4,5,6,7,8,9)

矩阵2:(9,8,7,6,5,4,3,2,1)

矩阵3:(0,2,4,1,4.5,2.2,1.1,4.3,5.2)

结果输出:(30,26,22,85,73.5,56.2,139.1118.3,95.2)

在我们给出的输出中,矩阵1*矩阵2+矩阵3=Ouput

我的主要问题是在输出中显示正确的数字,这看起来很简单,但他的数字与我的数字完全不符。我很难懂你只需要乘法和加法一次,但如果这是真的,没有两个数字能等于139.1

    import java.util.Scanner    
    public class Assignment8 {

      public static void printResult(                                                        
              double[][] m1, double[][] m2, double[][] m3, double[][] resultMatrix, char op1, char op2) {
            for (int i = 0; i < m1.length; i++) {
              for (int j = 0; j < m1[0].length; j++)
                System.out.print(" " + m1[i][j]);

              if (i == m1.length / 2)
                System.out.print( "  " + op1 + "  " );
              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( "  " + op2 + "  " );
              else
                System.out.print( "     " );

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

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

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

              System.out.println();
            }
    }


    public static double[][] multiplyMatrix(double[][] m3, double[][] m4) {
        double[][] result = new double[m3.length][m3[0].length];
        for (int i = 0; i < result.length; i++) {
            for (int j = 0; j < result[0].length; j++)
                    result[i][j] = m3[i][j] * m4[i][j];
        }
                    return 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++)
                    result[i][j] = m1[i][j] + m2[i][j];
        }
                    return result;
    }


    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double[][] m1 = new double[3][3];
        double[][] m2 = new double[3][3];
        double[][] m3 = new double[3][3];

        System.out.print("Enter Matrix 1: ");   
        for(int row = 0; row <m1.length; row++){
            for(int column = 0; column < m1[row].length; column++) {
                m1[row][column] = input.nextDouble();
            }
        }

        System.out.print("Enter Matrix 2:");
        for(int row = 0; row <m2.length; row++){
            for(int column = 0; column < m2[row].length; column++) {
                m2[row][column] = input.nextDouble();
            }
        }

        System.out.print("Enter Matrix 3:");
        for(int row = 0; row <m3.length; row++){
            for(int column = 0; column < m3[row].length; column++) {
                m3[row][column] = input.nextDouble();
            }
        }
        double multiply[][] = multiplyMatrix(m1, m2);
        double add[][] = addMatrix(multiply, m3);
        double resultMatrix[][] = addMatrix(add, multiply);

        printResult(m1, m2, m3, resultMatrix, '*', '+');        
    }
}
import java.util.Scanner
公共课堂作业8{
公共静态无效打印结果(
双[][]m1,双[][]m2,双[][]m3,双[][]结果矩阵,字符op1,字符op2){
对于(int i=0;i对于(int row=0;row我认为您用于矩阵乘法的逻辑是错误的。请看一看问题的解决,Phoenix为我指出了正确的方向,我只是简单地编辑了乘法方法以正确执行,真是妙极了!

阅读如何使用简单的迭代方法进行矩阵乘法。提示:您不需要st将一个矩阵中的数字与另一个矩阵中的相应数字相乘。@Refrain94-这些是向量矩阵吗?我记得在CS中使用微积分,因此向量化的矩阵乘法与“叉积”有关……非常感谢!我花了两个小时的时间来研究代码,我想定和乘法数组将使用相同的逻辑。只需逐个数字、9*1、2*8等。很高兴能提供帮助:)