2次元配列の2つのインスタンスを一緒に追加して新しい配列に格納するこのメソッドは、2つの配列が同じサイズ(たとえば、同じ行数と列数)を持つ必要があります。そうでなければ、私が定義した例外がスローされるはずです。私のメソッドは、最初の配列の行数と列数が違う場合にのみ例外をスローします。たとえば、これらの配列を渡すときに例外がスローされます:a [4] [4] b [5] [4]配列:a [4] [5] b [4] [5]、誰かがハプスを説明することができますか?私は例外を正しい方法で投げていますか?配列を持つ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の場合のみ、例外がスローされます。つまり、2つの外側の配列のサイズを比較することさえできません。最初の配列の行数がその最初の行の列数と等しい場合のみ。 2つの配列の行数と2つの配列のすべての行の要素数を比較する必要があります。結果の配列が新しいint [a.length] [b.length]として初期化される理由もわかりません。 –
@controlaltdelしかし、合計を返すと、コンソールの結果は次のようになります。配列の合計: --------------- | 1 + 1 = 2 | --------------- – Khaled
@Khaled私は謝罪します。私は "2番目のケースは例外を起こすべきではない..."と思っていたが、それは私が書いたものではない。いずれにしても、あなたが見つけたものと一致するようです。 – ControlAltDel