Rumah >Java >javaTutorial >Java ArrayIndexOutOfBoundsException

Java ArrayIndexOutOfBoundsException

王林
王林asal
2024-08-30 16:14:33889semak imbas

Java ArrayIndexOutOfBoundsException dihasilkan apabila elemen tatasusunan melepasi panjang pratakrif diakses. Tatasusunan dianggarkan pada jam pengesahannya, dan ia bersifat statik. Apabila kita mentakrifkan tatasusunan, bilangan elemen adalah tetap, dan ia bermula pada 0. Contohnya, jika terdapat 10 elemen, tatasusunan mengiktiraf elemen 10th sebagai 11th elemen kerana elemen pertama ialah elemen 0th. Pada mulanya, setiap pengaturcara berfikir bahawa sebaik sahaja program dilaksanakan, outputnya dijamin. Tetapi terdapat isu yang dibangkitkan oleh sistem yang menghalang pelaksanaan program semasa runtime, dan isu ini diistilahkan sebagai pengecualian. Oleh itu, apabila IndexOutOfBoundsException ini berlaku semasa masa jalan, ia dihasilkan daripada kelas RuntimeException, yang seterusnya merupakan subkelas bagi kelas Pengecualian Utama, dan semua ini diperoleh daripada pakej java.lang.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Pembina

Pembina terbentuk apabila antara muka dilaksanakan daripada ArrayOutOfBoundsException. Terdapat 3 jenis pembina ArrayIndexOutOfBoundsException,

  • ArrayIndexOutOfBoundsException(): Ia membina ArrayIndexOutOfBoundsException tanpa sebarang butiran daripada konsol.
  • ArrayIndexOutOfBoundsException(int index): Pembolehubah indeks mewakili indeks lain yang tidak sah, dan dengan itu ia membina ArrayIndexOutOfBoundsException.
  • ArrayIndexOutOfBoundsException(Strings): ArrayIndexOutOfBoundsException dibina dengan sebarang mesej yang betul.

Contoh untuk Melaksanakan Java ArrayIndexOutOfBoundsException

Di bawah adalah contoh yang dinyatakan:

Contoh #1

Mencipta ArrayOutOfBoundsException

Kod:

public class Main
{
public static void main (String[] args)
{
String[] veggies = {"Onion", "Carrot", "Potato", "Tomato", "Cucumber", "Radish"};
for (int i=0; i<=veggies.length; i++)
{
System.out.print (veggies[i] + " ");
}
}
}

Output:

Java ArrayIndexOutOfBoundsException

Dalam program di atas, kita melihat bahawa tatasusunan yang dipanggil sayur-sayuran terdiri daripada 6 elemen. Setelah gelung for diulang, ia mempertimbangkan keadaan I <=veggies.length, yang bermaksud bahawa tatasusunan mempertimbangkan elemen dari 0kedudukan hingga ke-6kedudukan dan akhirnya , semasa lelaran terakhir, nilai i=6 melebihi saiz tatasusunan, dan oleh itu, ArrayoutOfBoundsException dilaksanakan.

Contoh #2

Mengakses ArrayOutOfBoundsException untuk indeks negatif

Kod #1

public class Main {
public static void main (String[] args)
{
Integer[] intArray = {5, 7, 9, 11, 13, 15};
System.out.println ( "First element: " + intArray[0]);
System.out.println ( "Last element: " + intArray[-8]);
}
}

Output:

Java ArrayIndexOutOfBoundsException

Di sini, kami mula-mula mengisytiharkan tatasusunan integer, dan kemudian kami melihat ke dalam mengakses elemen individu dalam tatasusunan. Setelah itu selesai, kami cuba mencetak elemen pertama dengan memberikan arahan intArray[0]. Ini mengenali elemen 0th, iaitu 5 dan seterusnya mencetaknya. Sebaliknya, kami juga menyediakan arahan untuk mencetak indeks negatif sebagai -8. Oleh itu, sistem gagal mengenali indeks ini, dan dengan itu ArrayOutOfBoundsException dicetak dalam output.

Kod #2

public class MyClass {
int x;
public MyClass () {
x = 5;
}
public static void main (String[] args) {
MyClass myObj = new MyClass ();
System.out.println (myObj.x);
}
}

Output:

Java ArrayIndexOutOfBoundsException

Bagaimana untuk mengelakkan ArrayIndexOutOfBoundsException?

Setiap pengaturcara melakukan kesilapan dalam melaksanakan indeks dan elemen tatasusunan. Atas sebab ini, ArrayIndexOutOfBoundsException telah berlaku. Kita boleh mengelakkan kesilapan ini dengan mengikuti langkah di bawah.

1. Dipertingkatkan untuk gelung

Gelung yang dipertingkatkan berulang pada wilayah memori bersebelahan seperti tatasusunan dan hanya sampai ke indeks undang-undang. Mulai masa ini, apabila dipertingkatkan untuk gelung dilaksanakan, kita tidak perlu bimbang tentang indeks yang sesat atau tidak sah diperolehi.

Kod:

class Main {
public static void main (String[] args)
{
String[] fruits = {"Apple", "Mango", "Banana", "Watermelon", "Papaya"};
System.out.println ( "");
for (String strval:fruits)
{
System.out.print (strval + " ");
}
}
}

Output:

Java ArrayIndexOutOfBoundsException

Kami telah menggunakan gelung untuk dipertingkatkan dalam program di atas untuk mengulang susunan buah-buahan. Mula-mula, kami menerangkan 5 elemen dalam tatasusunan dan kemudian melaksanakan gelung untuk dipertingkatkan. Gelung ini berulang sehingga penghujung tatasusunan dicapai, dan kita tidak perlu mentakrifkan setiap tatasusunan secara berasingan. Oleh itu, ia hanya merangkumi indeks atau elemen yang sah dan akhirnya memberikan output yang tepat bagi perkara yang kita cari. Oleh itu, kita boleh mengelakkan ArrayIndexOutOfBoundsException dengan menggunakan gelung untuk dipertingkat ini.

2. Proper Start and End Indices

Arrays reliably start with list 0 and not 1. Moreover, the last part in the array can be gotten to using the record ‘arraylength-1’ and not ‘arraylength’. Programming engineers should be mindful while using beyond what many would consider possible and, as such, keep up a key good way from ArrayIndexOutOfBoundsException.

3. Type-Safe Iterator

Type-safe iterators do not toss an exception when they emphasise an assortment and make changes to it as they depict the assortment and roll out the improvements to it.

Code:

import java.util.HashMap;
public class MyClass {
public static void main (String[] args) {
HashMap<String, String> countries = new HashMap<String, String> ();
countries.put ( "India", "Delhi");
countries.put ( "Switzerland", "Bern");
countries.put ( "France", "Paris");
countries.put ( "Belgium", "Brussels");
System.out.println (countries);
}
}

Output:

Java ArrayIndexOutOfBoundsException

Explanation: In the above program, we declare the string of cities and countries and declare that to the HashMap. The system then recognizes this assortment, iterates the code, and finally produces the output without throwing an ArrayIndexOutOfBoundsException.

Conclusion

The ArrayIndexOutOfBoundsException in Java usually occurs when we try to access the elements which are greater than the array length. These exceptions can be avoided by using enhanced for loops or proper indices. There are also exceptions called NullPointerExceptions that are not checked and go beyond RuntimeException; it does not urge the software engineer to utilize the catch square to deal with it. Therefore, we should keep in mind that we should not go beyond array limits and also avoid NegativeArraySizeException.

Atas ialah kandungan terperinci Java ArrayIndexOutOfBoundsException. 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