Java 试图找出两个2*2矩阵之间的差异。我有这个代码,但它出现了无效的值 { 扫描仪键盘=新扫描仪(System.in); System.out.println(“欢迎使用矩阵减法!”); System.out.println(“在矩阵1中输入行数:”); int mat1_rows=keyboard.nextInt(); System.out.println(“在矩阵1中输入列数:”); int mat1_cols=keyboard.nextInt(); System.out.println(“输入矩阵2的行数:”); int mat2_rows=keyboard.nextInt(); 如果(mat1\u列!=mat2\u行) { System.out.println(“维度不匹配!无法减去这些矩阵!”); 系统出口(0); } System.out.println(“输入矩阵2的列数:”); int mat2_cols=keyboard.nextInt(); int[][]matrix1=新的int[mat1_行][mat1_列]; int[][]matrix2=新的int[mat2_行][mat2_列]; 对于(int i=0;i

Java 试图找出两个2*2矩阵之间的差异。我有这个代码,但它出现了无效的值 { 扫描仪键盘=新扫描仪(System.in); System.out.println(“欢迎使用矩阵减法!”); System.out.println(“在矩阵1中输入行数:”); int mat1_rows=keyboard.nextInt(); System.out.println(“在矩阵1中输入列数:”); int mat1_cols=keyboard.nextInt(); System.out.println(“输入矩阵2的行数:”); int mat2_rows=keyboard.nextInt(); 如果(mat1\u列!=mat2\u行) { System.out.println(“维度不匹配!无法减去这些矩阵!”); 系统出口(0); } System.out.println(“输入矩阵2的列数:”); int mat2_cols=keyboard.nextInt(); int[][]matrix1=新的int[mat1_行][mat1_列]; int[][]matrix2=新的int[mat2_行][mat2_列]; 对于(int i=0;i,java,Java,} 当我应用这段代码时,我能够将所有矩阵值存储到我想要的列数和行数中。但是当我运行代码时,减法是错误的,并不等于真正的差异。有什么建议吗?例如,如果我要为我的第一个矩阵输入15 as(0,0)、25 as(0,1)、2 as(1,0)和16 as(1,1),然后用另一个包含2 as(0,0)、5 as(0,1)、15 as(1,0)和2 as(1,1)的矩阵减去它,程序输出将=[13,20,-13,14](按从左到右的读取顺序)。两个矩阵的值似乎计算为: Diffi,j=M1i,j-M2i,j

}

当我应用这段代码时,我能够将所有矩阵值存储到我想要的列数和行数中。但是当我运行代码时,减法是错误的,并不等于真正的差异。有什么建议吗?例如,如果我要为我的第一个矩阵输入15 as(0,0)、25 as(0,1)、2 as(1,0)和16 as(1,1),然后用另一个包含2 as(0,0)、5 as(0,1)、15 as(1,0)和2 as(1,1)的矩阵减去它,程序输出将=[13,20,-13,14](按从左到右的读取顺序)。两个矩阵的值似乎计算为:

Diffi,j=M1i,j-M2i,j

也就是说,不需要第三级循环,该方法可以简单地实现为:

public static int[]]diffMatrix(int[]]m1,int[]]m2){
//m1.cols==m2.rows
int[]res=新的int[m1.长度][m2.长度];
对于(int i=0;i
测试此方法:

int[]m1={
{15, 25},
{2, 16}
};
int[]m2={
{2, 5},
{15, 2}
};
int[]diff=diffMatrix(m1,m2);
对于(int[]行:差异){
System.out.println(Arrays.toString(row));
}
产出:

{
    Scanner keyboard = new Scanner(System.in);
    
    System.out.println("Welcome to matrix subtracting!");
    
    System.out.println("Enter the number of rows in matrix 1:");
    
    int mat1_rows = keyboard.nextInt();
    
    System.out.println("Enter the number of columns in matrix 1:");
    
    int mat1_cols = keyboard.nextInt();
    
    System.out.println("Enter the number of rows of matrix 2:");
    
    int mat2_rows = keyboard.nextInt();
    
    if(mat1_cols != mat2_rows) 
    {
        System.out.println("Dimension mismatch! Cannot subtract these matrices!");
        
        System.exit(0);
    }
    
    System.out.println("Enter the number of columns of matrix 2:");
    
    int mat2_cols = keyboard.nextInt();
    
    int[][] matrix1 = new int[mat1_rows][mat1_cols];
    int[][] matrix2 = new int[mat2_rows][mat2_cols];

    
    for(int i = 0; i < mat1_rows; i++)
    {
        for(int j = 0; j < mat1_cols; j++)
        {
            System.out.println("Enter the matrix1 value at ("+i+", "+j+"):");
            
            matrix1[i][j] = keyboard.nextInt();
            
        }
    }
    
    //populate matrix2 with values
    
    for(int i = 0; i < mat2_rows; i++)
    {
        for(int j = 0; j < mat2_cols; j++)
        {
            System.out.println("Enter the matrix2 value at ("+i+", "+j+"):");
            
            matrix2[i][j] = keyboard.nextInt();
        }
    }
    
    int sum = 0;
    
    int[][] differenceMatrix = new int[mat1_rows][mat2_cols];
    
    for(int i = 0; i < mat1_rows; i++)
    {
        for(int j = 0; j < mat2_cols; j++)
        {
            for(int k = 0; k < mat1_cols; k++)
            {
                sum = matrix1[i][k] - matrix2[k][j];
            }
            
            differenceMatrix[i][j]= sum;
            sum = 0;
        }
    }
    
    //print the difference matrix
    
    for(int i = 0; i < mat1_rows; i++)
    {
        for(int j = 0; j < mat2_cols; j++)
        {
            System.out.print(differenceMatrix[i][j]+"\t");
        }
        
        System.out.println();
    }
}

我尝试过这个,但它也产生了随机值,使我离真正的差异更远,所以我删除了它
[13, 20]
[-13, 14]