2017-02-17 6 views
0

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); 
} 
+0

a.length!= a [0] .lengthの場合のみ、例外がスローされます。つまり、2つの外側の配列のサイズを比較することさえできません。最初の配列の行数がその最初の行の列数と等しい場合のみ。 2つの配列の行数と2つの配列のすべての行の要素数を比較する必要があります。結果の配列が新しいint [a.length] [b.length]として初期化される理由もわかりません。 –

+0

@controlaltdelしかし、合計を返すと、コンソールの結果は次のようになります。配列の合計: --------------- | 1 + 1 = 2 | --------------- – Khaled

+0

@Khaled私は謝罪します。私は "2番目のケースは例外を起こすべきではない..."と思っていたが、それは私が書いたものではない。いずれにしても、あなたが見つけたものと一致するようです。 – ControlAltDel

答えて

1

あなたは間違ってチェックを持っています。何が一番上に右にやるべきこと:

if (a.length != b.length || a[0].length != b[0].length) { 
    throw new IncompatibleArgumentsException(...); 
} 
+0

トリックをしてくれてありがとうございました。もう1つ質問がありますが、私はより多くの列や行を渡し、forループやより良いアプローチを使って値を設定するなど、より動的に渡す配列を作るにはどうすればよいでしょうか? – Khaled

+0

@Khaled、新しい質問を投稿できます – FSm

0

a.lengthは」「そうa.'length、と本質的に2次元配列を1次元配列の配列であるあなたの行数を与えるだろう単に'a'に1次元配列の数を与えます。列の数を一致させるには、個々の1次元配列aに何個の要素があるかを調べる必要があります。したがって、a[0].length(a [0] = aの0番目の1次元配列)列の

関連する問題