Lösung für Java Lang Index Out-of-Bounds-Ausnahme

Mehvish Ashiq 11 Dezember 2023
  1. Ursachen der java.lang.IndexOutOfBoundsException
  2. Lösung für die java.lang.IndexOutOfBoundsException unter Berücksichtigung von ArrayList
  3. Lösung für die java.lang.ArrayIndexOutOfBoundsException unter Berücksichtigung von Arrays
Lösung für Java Lang Index Out-of-Bounds-Ausnahme

Heute werden wir den Fehler IndexOutOfBoundsException unter Berücksichtigung von Arrays und ArrayList besprechen. Wir werden auch die Gründe verstehen, die diesen Fehler verursachen, und schließlich, wie er behoben werden kann.

Ursachen der java.lang.IndexOutOfBoundsException

Die Gründe für den Fehler IndexOutOfBoundsException sind in Arrays und ArrayList ähnlich, mit Ausnahme eines Unterschieds, der unterschiedliche Fehlerbeschreibungen hat. Wir erhalten diesen Fehler in Arrays und ArrayList als java.lang.ArrayIndexOutOfBoundsException bzw. java.lang.IndexOutOfBoundsException.

Die Gründe für diese Ausnahme sind unten aufgeführt:

  1. Wenn die ArrayList leer ist, versuchen Sie, auf den Wert am ersten Index zuzugreifen, der 0 ist.
  2. Wenn wir versuchen, auf ein Element in einem Array oder einer ArrayList bei einem negativen Index zuzugreifen.
  3. Wenn wir versuchen, auf einen ungültigen Index eines Arrays oder einer ArrayList zuzugreifen, der negativ, gleich oder größer als die Größe von Array oder ArrayList sein kann.

Denken Sie daran, dass die IndexOutOfBoundsException eine Laufzeitausnahme ist, die vom Java-Compiler zur Kompilierzeit nicht erkannt wird. Daher ist es notwendig zu wissen, wie man auf das Array oder die ArrayList zugreift.

Als Faustregel gilt, dass das Array oder die ArrayList gefüllt werden muss, bevor Sie darauf zugreifen. Außerdem können wir nur auf die Indizes zugreifen, die diese Bedingung erfüllen: 0 <= index < (Array/ArrayList size).

Lassen Sie es uns anhand von Codebeispielen lernen.

Lösung für die java.lang.IndexOutOfBoundsException unter Berücksichtigung von ArrayList

Beispielcode:

import java.util.ArrayList;

public class TestArrayList {
  public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    // we try to get value at index 0 which is
    // empty right now
    System.out.println(list.get(0));
    list.add("Mehvish"); // saves at index 0
    list.add("Ashiq"); // saves at index 1
  }
}

Der obige Code verursacht den Fehler IndexOutOfBoundsException, weil wir auf den Index 0 zugreifen, der noch nicht gefüllt ist.

Um diesen Fehler zu beheben, müssen wir zuerst Elemente in der ArrayList hinzufügen und dann darauf zugreifen, indem wir sicherstellen, dass wir nicht auf einen ungültigen Index zugreifen. Im folgenden Code haben wir alle Situationen behandelt, die eine IndexOutOfBoundsException verursachen können.

Beispielcode:

import java.util.ArrayList;

public class TestArrayList {
  // create array list object of String type
  static ArrayList<String> list = new ArrayList<>();

  // populate array list
  static void populateList() {
    list.add("Mehvish"); // saves at index 0
    list.add("Ashiq"); // saves at index 1
  }
  /*
  Access the index only if the index
  is valid and the list is not empty. Otherwise, print
  the message to inform the user
  */
  static void getElement(int index) {
    if (list.size() != 0 && index >= 0 && index < list.size()) {
      System.out.println(list.get(index));
    } else {
      System.out.println("The list is empty or you have entered an invalid index");
    }
  }
  // main method
  public static void main(String[] args) {
    populateList();
    getElement(0);
  }
}

Lassen Sie uns diesen Code an verschiedenen Eingaben testen.

Test 1: Der Benutzer übergibt 0 an die Funktion getElement(), die Ausgabe wäre,

Mehvish

Test 2: Der Benutzer übergibt 1 an die Funktion getElement(), die Ausgabe sieht so aus,

Ashiq

Test 3: Der Benutzer übergibt 2 an die Funktion getElement(), die Ausgabe wäre,

The list is empty or you have entered an invalid index

Test 4: Benutzer übergibt -1 an die Funktion getElement(), die Ausgabe ist wie folgt,

The list is empty or you have entered an invalid index

Test 5: Der Benutzer kommentiert die Funktion populateList() und übergibt einen gültigen Index. Die Ausgabe sieht wie folgt aus,

The list is empty or you have entered an invalid index

Lösung für die java.lang.ArrayIndexOutOfBoundsException unter Berücksichtigung von Arrays

Beispielcode:

public class TestArray {
  public static void main(String[] args) {
    int array[] = {1, 2, 3, 4, 5};
    for (int i = 0; i <= array.length; i++) System.out.println(array[i]);
  }
}

Dieses Codebeispiel verursacht die ArrayIndexOfBoundsException, weil versucht wird, auf den ungültigen Index 5 zuzugreifen. Denken Sie daran, dass wir nicht auf einen ungültigen Index zugreifen können.

Lassen Sie uns den folgenden Code testen, der alle möglichen Situationen behandelt und den Fehler ArrayIndexOutOfBoundsException vermieden hat.

Beispielcode:

import java.util.ArrayList;

public class TestArray {
  // required size of an array
  static int size = 2;
  // declare an int type array of specified size
  static int array[] = new int[size];

  // populate array
  static void populateArray() {
    for (int i = 0; i < size; i++) array[i] = i + 1;
  }

  // get element if a valid index is passed
  static void getElement(int index) {
    if (array.length != 0 && index >= 0 && index < array.length) {
      System.out.println(array[index]);
    } else {
      System.out.println("The array is empty or you have entered an invalid index");
    }
  }

  // main method
  public static void main(String[] args) {
    populateArray();
    getElement(1);
  }
}

Lassen Sie uns diesen Code mit verschiedenen Benutzereingaben testen.

Test 1: Der Benutzer übergibt 0 an die Funktion getElement(), die Ausgabe wäre,

1

Test 2: Der Benutzer übergibt 1 an die Funktion getElement(), die Ausgabe sieht so aus,

2

Test 3: Der Benutzer übergibt 2 an die Funktion getElement(), die Ausgabe wäre,

The array is empty or you have entered an invalid index

Test 4: Benutzer übergibt -1 an die Funktion getElement(), die Ausgabe ist wie folgt,

The array is empty or you have entered an invalid index

Test 5: Der Benutzer kommentiert die Funktion populateArray() und übergibt einen gültigen Index. Die Ausgabe sieht wie folgt aus,

0

Warum ist es 0? Das liegt daran, dass wir ein leeres Array initialisiert haben, wobei 0 ein Standardwert für den int-Typ ist. Wenn wir die Elemente nicht initialisieren, werden die Standardwerte der numerischen Array-Elemente auf 0 gesetzt, während die Referenzelemente auf null gesetzt werden.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Verwandter Artikel - Java Error

Verwandter Artikel - Java Exception