Rumah >Java >javaTutorial >Penyelesaian kepada pengecualian indeks data Java (IndexOutOfBoundsException)

Penyelesaian kepada pengecualian indeks data Java (IndexOutOfBoundsException)

王林
王林asal
2023-08-18 22:48:336840semak imbas

Penyelesaian kepada pengecualian indeks data Java (IndexOutOfBoundsException)

Penyelesaian kepada pengecualian indeks data Java (IndexOutOfBoundsException)

Pengenalan:
Dalam pengaturcaraan Java, apabila elemen tatasusunan yang tidak wujud diakses atau indeks koleksi berada di luar julat, pengecualian IndexOutOfBounds.Exception Ini adalah kesilapan biasa yang sering dihadapi oleh ramai pemula. Artikel ini akan memperkenalkan cara untuk mengelakkan dan menyelesaikan pengecualian IndexOutOfBoundsException dengan beberapa penyelesaian mudah.

  1. Pengiraan Indeks Tidak Betul
    Pertama, kami ingin menyemak ketepatan pengiraan indeks. Dalam banyak kes, pengecualian IndexOutOfBoundsException disebabkan oleh ralat pengiraan indeks.

Contoh Kod 1:

int[] array = new int[5];
int index = 5;
array[index] = 10;  // 此处抛出IndexOutOfBoundsException异常

Dalam kod di atas, kami telah mencipta tatasusunan integer dengan panjang 5, tetapi apabila cuba memberikan nilai kepada elemen dengan indeks 5, pengecualian IndexOutOfBoundsException dilemparkan. Ini kerana indeks tatasusunan dikira bermula dari 0, jadi julat indeks tatasusunan yang sah hendaklah 0 hingga 4. Menyelesaikan masalah ini hanya memerlukan pengiraan indeks dengan betul.

Contoh kod 2:

int[] array = new int[5];
int index = 4;
array[index] = 10;  // 正确的索引赋值
  1. Penghakiman tidak kosong
    Apabila menggunakan koleksi atau struktur data yang berkembang secara dinamik, anda mesti menilai dahulu sama ada unsur tersebut batal atau cukup telah ditambahkan. Jika tidak, IndexOutOfBoundsException mungkin dilemparkan kerana akses di luar sempadan.

Contoh Kod 3:

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
int index = 2;
int value = list.get(index);  // 此处抛出IndexOutOfBoundsException异常

Dalam kod di atas, kami telah mencipta ArrayList kosong dan cuba mendapatkan nilai elemen dengan indeks 2, tetapi kerana terdapat hanya dua elemen, mengakses elemen dengan indeks 2 membuang An Pengecualian IndexOutOfBoundsException berlaku. Untuk menyelesaikan masalah ini, anda boleh menentukan saiz atau panjang koleksi sebelum mengaksesnya.

Sampel kod 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. Kawalan gelung
    Apabila menggunakan gelung, anda mesti memastikan bahawa indeks tidak melebihi julat sah tatasusunan atau koleksi. Biasanya terdapat dua cara untuk mengelakkan IndexOutOfBoundsException:

Kaedah 1: untuk kawalan gelung:

for (int i = 0; i < array.length; i++) {
    // 访问数组元素
}

Apabila menggunakan gelung for, kawal bilangan gelung dengan menggunakan panjang tatasusunan atau koleksi untuk memastikan ia tidak melebihi julat indeks.

Kaedah 2: kawalan gelung foreach:

for (int value : array) {
    // 访问数组元素
}

Apabila menggunakan gelung foreach, anda tidak perlu mengambil berat tentang julat indeks, kerana lapisan asas telah membuat pertimbangan yang berkaitan, jadi tidak akan ada pengecualian IndexOutOfBoundsException.

Ringkasnya, melalui pengiraan indeks yang betul, pertimbangan bukan nol dan kawalan gelung, kita boleh mengelak dan menyelesaikan pengecualian IndexOutOfBoundsException di Java. Penyelesaian mudah ini boleh meningkatkan keteguhan dan kebolehbacaan kod kami, dan juga boleh membantu kami mencari dan membetulkan ralat dengan lebih baik. Bagi pembangun program Java, menguasai kemahiran ini adalah sangat penting untuk meningkatkan kualiti dan kecekapan kod.

Rujukan:

  • https://docs.oracle.com/en/java/javase/14/names-indexes-for-td-tables.html
  • https://www.geeksforgeeks.org/indexoutofboundsexception - dalam-java-dengan-contoh/

Atas ialah kandungan terperinci Penyelesaian kepada pengecualian indeks data Java (IndexOutOfBoundsException). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn