ホームページ > Java > &#&チュートリアル > Java データ インデックス例外 (IndexOutOfBoundsException) の解決策

Java データ インデックス例外 (IndexOutOfBoundsException) の解決策

王林
リリース: 2023-08-18 22:48:33
オリジナル
6840 人が閲覧しました

Java データ インデックス例外 (IndexOutOfBoundsException) の解決策

Java データ インデックス例外 (IndexOutOfBoundsException) の解決策

はじめに:
Java プログラミングで、存在しない配列要素またはコレクションにアクセスするとき、インデックスが次の値を超えるとき範囲を指定すると、IndexOutOfBoundsException 例外がスローされます。これは多くの初心者がよく遭遇するよくある間違いです。この記事では、IndexOutOfBoundsException 例外を回避および解決する方法と、簡単な解決策を紹介します。

  1. 不正なインデックス計算
    まず、インデックス計算の精度を確認する必要があります。多くの場合、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;  // 正确的索引赋值
ログイン後にコピー
  1. 非 null の判定
    コレクションまたは動的に増加するデータ構造を使用する場合、最初にそれが null であるか、または十分なデータが存在するかどうかを判断する必要があります。追加された要素。そうしないと、範囲外アクセスにより IndexOutOfBoundsException がスローされる可能性があります。

サンプル コード 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. ループ コントロール
    ループを使用する場合は、インデックスが配列またはコレクションの有効な範囲を超えないようにする必要があります。 IndexOutOfBoundsException を回避するには、通常 2 つの方法があります。

方法 1: for ループ制御:

for (int i = 0; i < array.length; i++) {
    // 访问数组元素
}
ログイン後にコピー

for ループを使用する場合は、配列またはコレクションの長さを使用してループを制御します。インデックスの範囲を超えないようにします。

方法 2: foreach ループ制御:

for (int value : array) {
    // 访问数组元素
}
ログイン後にコピー

foreach ループを使用する場合、基礎となる層がすでに適切な判断を行っているため、インデックスの範囲を気にする必要はありません。 IndexOutOfBoundsException 例外は発生しません。

まとめると、正しいインデックス計算、非 null 判定、ループ制御により、Java における IndexOutOfBoundsException 例外を回避し、解決することができます。これらのシンプルなソリューションにより、コードの堅牢性と読みやすさが向上し、エラーの特定と修正にも役立ちます。 Java プログラム開発者にとって、コードの品質と効率を向上させるには、これらのスキルを習得することが非常に重要です。

参考資料:

  • https://docs.oracle.com/en/java/javase/14/names-indexes-for-td-tables.html
  • https://www.geeksforgeeks.org/indexoutofboundsException-in-java-with-examples/

以上がJava データ インデックス例外 (IndexOutOfBoundsException) の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート