我有這種方法,它採用二維數組的兩個實例將它們添加在一起,並將總和存儲在一個新的數組中,兩個數組必須具有相同的大小,例如。(相同的行和列號)如果不是,它應該拋出我定義的異常。我的方法拋出異常只有當第一個數組具有不同數量的行而不是列時,例如只有當我傳遞這些數組時,纔會拋出異常:a [4] [4] b [5] [4]但不是這些數組:a [4] [5] b [4] [5],有人可以解釋什麼是happing?我正在以正確的方式拋出異常?JAVA異常與陣列
public int[][] add(int[][] a, int[][] b) throws IncompatibleArgumentsException {
int[][] sum = new int[a.length][b.length];
if (a.length == b.length) {
System.out.println("The Sum of the arrays is: ");
System.out.println(" --------------- ");
for (int row = 0; row < a.length; row++) {
for (int col = 0; col < b.length; col++) {
sum[row][col] = a[row][col] + b[row][col];
System.out.println(" | " + a[row][col] + " + " + b[row][col] + " = " + sum[row][col] + " | ");
System.out.println(" --------------- ");
}
}
} else {
throw new IncompatibleArgumentsException("Arrays have different size");
}
return sum;
}
,這是怎麼了調用該方法:
public Implementation() {
int[][] x = new int[1][1];
x[0][0] = 1;
int[][] y = new int[1][2];
y[0][0] = 1;
y[0][1] = 3;
add(x, y);
}
那麼,你只會拋出一個異常,如果a.length!= a [0] .length。所以你甚至不會比較兩個外部數組的大小。只有第一個數組的行數等於第一行的列數。您需要比較兩個數組的行數和兩個數組中所有行的元素數。我也不明白爲什麼結果數組被初始化爲新的int [a.length] [b.length]。 –
@controlaltdel但它返回的總和,這裏是控制檯結果:數組的總和是: --------------- | 1 + 1 = 2 | --------------- – Khaled
@Khaled我道歉。我在想,「第二個案例不應該引起例外......」但這不是我寫的。在任何情況下,它似乎與你找到的 – ControlAltDel