Java

[Java] java.lang.ArrayIndexOutOfBoundsException

Darane 2020. 6. 13. 20:04

배열을 사용하다 보면 종종 ArrayIndexOutOfBoundsException이 발생하는 경우가 있다. 배열의 원소에 접근하다가 Exception이 발생하는데 포스팅을 통해 발생 예제와 해결방법을 확인해보자.

 

 

 

 

 

 

 

 

1. 예제

아래와 같이 배열에 접근하면 java.lang.ArrayIndexOutOfBoundsException이 발생한다.

 

반복문

int[] intArray = {1, 2, 3, 4, 5};
		
for (int i = 0; i <= intArray.length; i++) {
	System.out.println("element : " + intArray[i]);
}

Exception

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
	at test/test.Manager.main(Manager.java:28)

 

 

값 얻어오기

int[] intArray = {1, 2, 3, 4, 5};
		
System.out.println("element : " + intArray[7]);

Exception

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 7 out of bounds for length 5
	at test/test.Manager.main(Manager.java:27)

 

ArrayIndexOutOfBoundsException 문서의 설명을 보면 다음과 같다.

Thrown to indicate that an array has been accessed with an illegal index. The index is either negative or greater than or equal to the size of the array.

 

위의 설명과 같이 배열에 잘못된 인덱스로 접근하면 발생하고, 마이너스 인덱스나 배열의 사이즈와 같거나 크면 ArrayIndexOutOfBoundsException이 발생한다.

 

2. 해결방법

인덱스를 통한 배열에 접근할 때 사이즈를 미리 확인해준다.

if (intArray.length != 2) { 
	System.out.println("element : " + intArray[2]);
}

 

for-each를 사용한다.

리스트를 순회할 때 인덱스를 통한 접근을 사용하지 않으므로 인덱스 직접 접근 시 실수로 발생하는 에러를 줄일 수 있다.

int[] intArray = {1, 2, 3, 4, 5};

for (int element : intArray) {
	System.out.println("element : " + element);
}
반응형