Java 프로그래밍을 하다 보면 java.lang.ArrayIndexOutOfBoundsException: -1와 같은 예외를 마주칠 때가 있습니다. 이 오류는 배열의 유효한 범위를 벗어난 인덱스로 접근하려고 할 때 발생합니다. 특히 인덱스가 -1인 경우, 이는 일반적으로 배열의 끝에서부터 역순으로 접근하려 했거나, 잘못된 계산으로 인해 음수 인덱스가 발생했을 가능성이 높습니다.
ArrayIndexOutOfBoundsException이란?
ArrayIndexOutOfBoundsException은 배열의 크기보다 크거나, 0보다 작은 인덱스를 사용하여 배열 요소에 접근하려 할 때 발생하는 런타임 예외입니다. Java에서 배열의 인덱스는 0부터 시작하여 배열길이 - 1까지 유효합니다. 따라서 유효한 범위를 벗어난 인덱스를 사용하면 이 예외가 발생합니다.
-1 인덱스 오류의 주요 원인
-1 인덱스 오류는 다음과 같은 상황에서 주로 발생합니다.
-
잘못된 루프 조건:
for루프 등에서 배열의 길이를 잘못 계산하거나, 루프 종료 조건을 잘못 설정하여 배열의 범위를 벗어나는 인덱스에 접근할 때 발생할 수 있습니다. 예를 들어, 배열의 마지막 요소에 접근하기 위해i <= array.length와 같은 조건을 사용하면array.length인덱스에 접근하게 되어ArrayIndexOutOfBoundsException이 발생합니다. 반대로, 역순으로 접근하려 할 때i >= 0대신i > 0과 같은 조건을 사용하면 첫 번째 요소(index 0) 이전의 인덱스(index -1)에 접근할 수 있습니다. -
배열 크기 계산 오류: 배열의 크기를 동적으로 계산하는 과정에서 논리적인 오류가 발생하여 실제 배열 크기보다 작은 크기의 배열이 생성되거나, 잘못된 계산으로 음수 인덱스가 생성될 수 있습니다.
-
indexOf()또는lastIndexOf()결과 처리 오류: 문자열이나 컬렉션에서 특정 요소의 위치를 찾는indexOf()메서드는 해당 요소가 없을 경우 -1을 반환합니다. 이 반환 값을 배열 인덱스로 직접 사용하면ArrayIndexOutOfBoundsException이 발생합니다. 예를 들어, `String.indexOf(