Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ArrayIndexOutOfBoundsException ใน Java คืออะไร


อาร์เรย์เป็นข้อมูล โครงสร้าง/คอนเทนเนอร์/วัตถุ ที่เก็บคอลเล็กชันแบบต่อเนื่องขนาดคงที่ขององค์ประกอบประเภทเดียวกัน ขนาด/ความยาวของอาร์เรย์จะถูกกำหนดในขณะที่สร้าง

ตำแหน่งขององค์ประกอบในอาร์เรย์เรียกว่าดัชนีหรือตัวห้อย องค์ประกอบแรกของอาร์เรย์จะถูกเก็บไว้ที่ดัชนี 0 และองค์ประกอบที่สองอยู่ที่ดัชนี 1 เป็นต้น

ArrayIndexOutOfBoundsException ใน Java คืออะไร

แต่ละองค์ประกอบในอาร์เรย์สามารถเข้าถึงได้โดยใช้นิพจน์ที่มีชื่อของอาร์เรย์ตามด้วยดัชนีขององค์ประกอบที่จำเป็นในวงเล็บเหลี่ยม

System.out.println(myArray[3]);
//prints 1457

โดยทั่วไป อาร์เรย์จะมีขนาดคงที่และแต่ละองค์ประกอบสามารถเข้าถึงได้โดยใช้ดัชนี ตัวอย่างเช่น เราได้สร้างอาร์เรย์ที่มีขนาด 7 แล้ว นิพจน์ที่ถูกต้องเพื่อเข้าถึงองค์ประกอบของอาร์เรย์นี้จะเป็น a[0] ถึง a[6] (length-1)

เมื่อใดก็ตามที่คุณใช้ค่า –ve หรือค่าที่มากกว่าหรือเท่ากับขนาดของอาร์เรย์ ดังนั้น ArrayIndexOutOfBoundsException ถูกโยนทิ้ง

ตัวอย่างเช่น หากคุณรันโค้ดต่อไปนี้ มันจะแสดงองค์ประกอบในอาร์เรย์เพื่อขอให้คุณให้ดัชนีเพื่อเลือกองค์ประกอบ เนื่องจากขนาดของอาร์เรย์คือ 7 ดัชนีที่ถูกต้องจะเป็น 0 ถึง 6

ตัวอย่าง

import java.util.Arrays;
import java.util.Scanner;
public class AIOBSample {
   public static void main(String args[]){
      int[] myArray = {1254, 1458, 5687,1457, 4554, 5445, 7524};
      System.out.println("Elements in the array are: ");
      System.out.println(Arrays.toString(myArray));
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter the index of the required element: ");
      int element = sc.nextInt();
      System.out.println("Element in the given index is :: "+myArray[element]);
   }
}

แต่ถ้าคุณสังเกตผลลัพธ์ด้านล่าง เราได้ร้องขอองค์ประกอบที่มีดัชนี 9 เนื่องจากเป็นดัชนีที่ไม่ถูกต้องและ ArrayIndexOutOfBoundsException ยกขึ้นและการประหารชีวิตสิ้นสุดลง

ผลลัพธ์

ข้อยกเว้นรันไทม์ -

Elements in the array are:
[1254, 1458, 5687, 1457, 4554, 5445, 7524]
Enter the index of the required element:
7
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
   at AIOBSample.main(AIOBSample.java:12)