Rumah >Java >javaTutorial >Java ArrayIndexOutOfBoundsException
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 terbentuk apabila antara muka dilaksanakan daripada ArrayOutOfBoundsException. Terdapat 3 jenis pembina ArrayIndexOutOfBoundsException,
Di bawah adalah contoh yang dinyatakan:
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:
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.
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:
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:
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.
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:
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.
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.
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:
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.
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!