我几乎完成了一个可对两个矩阵进行加,减和缩放的程序。我为每个测试用例创建了两个测试用例,并为当两个矩阵的大小不同的标准协议添加了错误消息。但是,我的第二个减法案例遇到了问题。这是两个二维数组:
int[][] a = {{1,2},{3,4}};
int[][] b = {{2,3},{5,7}};
这是减法,分别是call和println:
public static int[][] subtraction(int[][] arr1, int[][] arr2){
int rows1 = arr1.length;
int rows2 = arr2.length;
int columns1 = arr1[0].length;
int columns2 = arr2[0].length;
if (rows1 != rows2 || columns1 != columns2){
System.out.print("Matrices are not the same size, please try again.");
return null;
}
for (int i = 0; i < rows1; i++){
for (int j = 0; j < columns1; j++){
arr1[i][j] -= arr2[i][j];
}
}
return arr1;
}
System.out.println(Arrays.deepToString(subtraction(b, a)));
[[1, 1], [2, 3]]
退房吧?那为什么呢...
System.out.println(Arrays.deepToString(subtraction(a, b)));
...打印这个?
[[1, 2], [3, 4]]
我已经深入研究了数组文档和堆栈溢出,但从未见过这样的事情。该程序仅打印第一个数组,而不完成计算。我在这里想念什么吗?
谢谢您理解我的困境。
最佳答案
我得到[[-1,-1],[-2,-3]],这是正确的,减法会更改第一个参数,因此运行
System.out.println(Arrays.deepToString(subtraction(b, a)));
System.out.println(Arrays.deepToString(subtraction(a, b)));
[[1,1],[2,3]]
[[0,1],[1,1]]
因此,也许您在调用减法(a,b)之前已更改a或?