종종 볼 수 있는 에러이다. 

나는 보통 향상된 for문(forEach)가 아닌 원래의 for문을 사용하려다가 나오는 에러인데 다른 사람들은 어떤지 모르겠다.

※원인
- 자료형에 존재하지 않는 인덱스 값를 불러오려고 할 때 발생.

※해결
- 인덱스를 잘 확인하고 설정을 바꾼다.



========================= Java =========================

public static void main(String[] args) {

// 객체 생성

int[] num;

num = new int[4];

//배열에 값 입력

for(int i = 0; i < num.length ; i++) {

num[i] = i;

}// end of for;

// 출력해본다.

for (int i = 0; i <= num.length ; i++) {

System.out.println(num[i]);

}// end of for;

}// end of main()

========================= Java =========================




위의 코드는 num이라는 총 4개의 공간이 있는 배열을 생성하고 각 인덱스에 인덱스 값을 지정하여 그것을 출력하는 프로그램이다.

아래의 for를 보면 언제까지 for을 수행할지에 대한 조건으로 
i <= num.length
이렇게 넣어놨다. 여기서 num.length는 num의 공간이 4개이므로 4이다.
num.length = 4

그러나 인덱스는 [0,1,2,3]이다. 프로그램이 아랫쪽 for을 수행하다보면 i = 4인 구간에 들어가게 되고
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
위와 같은 에러메시지를 띄우게 된다. 

에러를 해결하기 위해 




========================= Java =========================

public static void main(String[] args) {

// 객체 생성

int[] num;

num = new int[4];

//배열에 값 입력

for(int i = 0; i < num.length ; i++) {

num[i] = i;

}// end of for;

// 출력해본다.

for (int i = 0; i < num.length ; i++) {

System.out.println(num[i]);

}// end of for;

}// end of main()

========================= Java =========================



이런식으로 for의 조건을 바꿔주면 된다.

+ Recent posts