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
} 当我应用这段代码时,我能够将所有矩阵值存储到我想要的列数和行数中。但是当我运行代码时,减法是错误的,并不等于真正的差异。有什么建议吗?例如,如果我要为我的第一个矩阵输入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](按从左到右的读取顺序)。两个矩阵的值似乎计算为: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
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]