0

AP Java ブックの「配列の概要」セクションを読み、次の例を試してみましたが、エラーが発生して理由がわかりません。

コード:

public static void arrayT(int i){
  String[] alphabet = new String[5];
  alphabet[0] = "a";
  alphabet[1] = "c";
  alphabet[2] = "x";
  alphabet[3] = "b";
  alphabet[4] = "d";
  alphabet[5] = "e";
  System.out.println(alphabet[i]);
}

主要:

public static void main(String [] args){
  arrayT(2);
}

出力:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Main.arrayT(Main.java:18)
at Main.main(Main.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

私は何を間違っていますか?

4

5 に答える 5

4
String[] alphabet = new String[5];

上記のステートメントは、容量が 5 の配列を割り当てます。有効なインデックスは、0、1、2、3、および 4 です。

インデックス 5 は範囲外です。したがって:

  alphabet[5] = "e";

例外をスローします。

于 2013-11-06T02:52:37.203 に答える
1

String[] alphabet = new String[5];長さ 5 の配列を作成します。つまり、インデックス 0、1、2、3、4 とちょうど 5 つの要素を持ちます。インデックス 5 の下に存在しない要素にアクセスしようとしています。

于 2013-11-06T02:52:21.760 に答える
0

定義された配列の長さは 5 で、alphabet[5] = "e";配列に 6 番目の要素を追加しようとしています。長さを 6 として配列を定義するか

String[] alphabet = new String[6];

または、コードの最後の行を削除します

alphabet[5] = "e"
于 2013-11-06T02:55:24.783 に答える
0

これは、長さ 5 の配列を宣言しているにもかかわらず、6 つの値を割り当てているためです。

アルファベット[5] = "e";. これにより、「スレッド「メイン」で例外 java.lang.ArrayIndexOutOfBoundsException: 5」が発生します

配列の長さを 6 に設定してみてください。そうすれば正しい結果が得られます。

文字列[] アルファベット = 新しい文字列[6];

于 2013-11-06T02:55:50.507 に答える
0
public static void arrayT(int i){
  String[] alphabet = new String[5];
  alphabet[0] = "a";
  alphabet[1] = "c";
  alphabet[2] = "x";
  alphabet[3] = "b";
  alphabet[4] = "d";
  alphabet[5] = "e";
  System.out.println(alphabet[i]);
}

これでステートメントを宣言したとき

 String[] alphabet = new String[5];

その場合、文字列配列のサイズは 5、つまり 0 ~ 4 (0 を含む場合、合計で 5 つの要素を追加できます)

そのため、6 つの要素を追加するには、文字列配列のサイズを 6 に増やす必要があります。

 String[] alphabet = new String[6];
于 2013-11-06T07:25:58.830 に答える