-1

このコードを実行しようとしていますが、ArrayIndexOutOfBound例外エラーが引き続き発生します。

public class Heisenberg {
 public static void main(String[] args)  {
    int[] array1 = new int[5];
    int[] array2 = new int[5];

    Ext(-1, 10, array1, array2);
  } 

 public static void Ext(int q, int w, int[] e, int[] r)  {
    if (q >= 0)
      e[q] = w;
      r[q] = w;
  }
}

私は配列に少し慣れていないので、すべての助けに感謝します。enter code here

4

4 に答える 4

7

問題は、中括弧がないと、次のステートメントにのみif適用されることです。

 if (q >= 0)
  e[q] = w;
  r[q] = w;  // <---- here you get ArrayIndexOutOfBound Exception

次のような中かっこを追加します。

if (q >= 0){
  e[q] = w;
  r[q] = w;
}
于 2013-10-23T20:53:43.640 に答える
1

if 条件の左中括弧と右中括弧を配置します。

于 2013-10-23T20:54:10.327 に答える
0

次の行でエラーが発生しています。

r[q] = w;

これはifブロックのうち、qの値が-1エラーの原因です。

if ブロックに移動します。

if (q >= 0){
  e[q] = w;
  r[q] = w;
}

乾杯 !!

于 2013-10-23T20:55:18.057 に答える
0

qvalueのパラメーターを指定してメソッド Ext を呼び出します-1。次に、r[q] = w;定義されていない-1でアクセスします(サイズ5の配列はインデックス0〜4で定義されています)。

なぜあなたはそれにアクセスしますか?

if (q >= 0)
  e[q] = w;
  r[q] = w;

これは、if ステートメントは、e[q] = w; すべてのコードを if ステートメントでカバーしたい場合にのみ比較されることを意味します。if ステートメントに中かっこがない場合、最初のタスクのみが if ステートメントに接続されます。

if (q >= 0){
  e[q] = w;
  r[q] = w;
}
于 2013-10-23T20:55:46.053 に答える