종종 볼 수 있는 에러이다.
나는 보통 향상된 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의 조건을 바꿔주면 된다.
'프로그래밍 > 웹 프로그래밍' 카테고리의 다른 글
[Mybatis] mybatis-config.xml (0) | 2018.05.21 |
---|---|
[Spring] web.xml UTF-8 필터 설정 (0) | 2018.05.19 |
[Error]Eclipse에서 Tomcat Server 구동시 Timeout Error (0) | 2018.05.02 |
필터(Filter)에 관하여 in JSP (0) | 2018.04.24 |
팩토리를 이용한 Beans 클래스 해석 in Java, JSP(객체 자동 생성 및 재사용을 높이는 방법) (0) | 2018.04.23 |