배열을 사용하다 보면 종종 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);
}
반응형
'Java' 카테고리의 다른 글
[Java] Ping 보내는 방법 InetAddress.isReachable() (0) | 2021.09.02 |
---|---|
[Java] Float, Double 크기 비교(compare) (0) | 2021.08.29 |
[Java] String startsWith(), EndsWith() 구현 예제 (0) | 2020.07.20 |
[Java] JSONArray에서 JSONObject 값 얻어오기 (0) | 2020.07.12 |
Java String을 int로 변환, int를 String으로 변환 - String to int, int to String (0) | 2020.05.27 |
Java 리스트(List) 구현 - ArrayList, Vector, LinkedList (0) | 2020.05.24 |
Java byte array를 String으로 String을 byte array로 변환 (2) | 2020.05.15 |
Java parseInt() vs valueOf() 차이점, parseFloat() vs valueOf() 차이점 (0) | 2020.05.11 |