ホームページ >Java >&#&チュートリアル >Java データ インデックス例外 (IndexOutOfBoundsException) の解決策
Java データ インデックス例外 (IndexOutOfBoundsException) の解決策
はじめに:
Java プログラミングで、存在しない配列要素またはコレクションにアクセスするとき、インデックスが次の値を超えるとき範囲を指定すると、IndexOutOfBoundsException 例外がスローされます。これは多くの初心者がよく遭遇するよくある間違いです。この記事では、IndexOutOfBoundsException 例外を回避および解決する方法と、簡単な解決策を紹介します。
サンプル コード 1:
int[] array = new int[5]; int index = 5; array[index] = 10; // 此处抛出IndexOutOfBoundsException异常
上記のコードでは、長さ 5 の整数配列を作成しましたが、インデックス 5 の要素に値を割り当てようとすると、 IndexOutOfBoundsException 例外がスローされます。これは、配列のインデックスが 0 から計算されるため、配列の有効なインデックス範囲は 0 ~ 4 である必要があるためです。この問題を解決するには、インデックスを正しく計算するだけで済みます。
サンプル コード 2:
int[] array = new int[5]; int index = 4; array[index] = 10; // 正确的索引赋值
サンプル コード 3:
List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); int index = 2; int value = list.get(index); // 此处抛出IndexOutOfBoundsException异常
上記のコードでは、空の ArrayList を作成し、インデックス 2 の要素値を取得しようとしましたが、要素が 2 つしかないため、インデックス 2 の要素にアクセスすると、IndexOutOfBoundsException 例外がスローされます。この問題を解決するには、コレクションにアクセスする前に、コレクションのサイズまたは長さを決定します。
サンプル コード 4:
List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); int index = 1; if (index < list.size()) { int value = list.get(index); // 正确的访问 }
方法 1: for ループ制御:
for (int i = 0; i < array.length; i++) { // 访问数组元素 }
for ループを使用する場合は、配列またはコレクションの長さを使用してループを制御します。インデックスの範囲を超えないようにします。
方法 2: foreach ループ制御:
for (int value : array) { // 访问数组元素 }
foreach ループを使用する場合、基礎となる層がすでに適切な判断を行っているため、インデックスの範囲を気にする必要はありません。 IndexOutOfBoundsException 例外は発生しません。
まとめると、正しいインデックス計算、非 null 判定、ループ制御により、Java における IndexOutOfBoundsException 例外を回避し、解決することができます。これらのシンプルなソリューションにより、コードの堅牢性と読みやすさが向上し、エラーの特定と修正にも役立ちます。 Java プログラム開発者にとって、コードの品質と効率を向上させるには、これらのスキルを習得することが非常に重要です。
参考資料:
以上がJava データ インデックス例外 (IndexOutOfBoundsException) の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。