Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 ArrayIndexOutOfBoundsException이란 무엇입니까?

<시간/>

배열은 데이터 구조/컨테이너/객체입니다. 동일한 유형의 요소에 대한 고정 크기 순차 컬렉션을 저장합니다. 배열의 크기/길이는 생성 시 결정됩니다.

배열에서 요소의 위치를 ​​인덱스 또는 첨자라고 합니다. 배열의 첫 번째 요소는 인덱스 0에 저장되고 두 번째 요소는 인덱스 1에 저장되는 식입니다.

Java에서 ArrayIndexOutOfBoundsException이란 무엇입니까?

배열의 각 요소는 배열 이름 뒤에 대괄호 안에 필요한 요소의 인덱스가 포함된 표현식을 사용하여 액세스됩니다.

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

일반적으로 배열은 고정된 크기이며 각 요소는 인덱스를 사용하여 액세스됩니다. 예를 들어 크기가 7인 배열을 만들었습니다. 그러면 이 배열의 요소에 액세스하는 데 유효한 표현식은 a[0] ~ a[6](길이-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]);
   }
}

그러나 아래 출력을 관찰하면 유효하지 않은 색인 ArrayIndexOutOfBoundsException이므로 색인이 9인 요소를 요청했습니다. 제기되고 실행이 종료되었습니다.

출력

런타임 예외 -

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)