ArrayIndexOutOfBoundsException 은 언제 발생하는가?
너무도 당연할 말이지만, 배열의 범위 값에 문제가 있을 때에 발생한다.
다음의 예제는 배열을 이용하여 10진수를 2진수로 바꾸는 예제이다.
위의 예제를 실행하면 정상 출력값은, Interger 최대값 / 350의 2진수 값/ -350의 2진수 값을 예상할 수 있다.
그러나, 본 예제를 실행했을 때 출력되는 것은 다음과 같은 오류였다...
첫째로, BitShift10To2.showsb 가 잘못되었다고 한다. 다시 그 부분을 자세히 보자.
20 라인은 스트링 버퍼의 append 메서드를 이용하여 값을 추가하고 있는 부분이다.
흠, 이 부분은 괜찮은 것 같은데... 좀 더 위를 보니 for 문의 시작값과 끝값이 나와 있다.
문제점이 보이는가?
센스 있는 개발자라면 한 눈에 문제를 파악했을 것이다.
하지만, 나는 센스가 있는 편은 아니기에 b.length 값(32)을 다시 확인해 보았다.
현재 for문의 시작값은 32, 종료값은 0이다. 즉 for문은 33번 반복되는 것이다.
이제 좀 감이 잡히는가?
배열의 크기는 32인데, 반복문은 33번 돌려고 해서 ArrayIndexOutOfBoundsException 이 발생하는
것이다. 따라서, 다음과 같이 시작값 - 1을 하여서 32부터 시작한다면 문제는 해결되는 것이다.
'Dev. Debug > 프로그램' 카테고리의 다른 글
Error setting null for parameter #2 with JdbcType OTHER (0) | 2016.02.06 |
---|---|
[i-batis] com.ibatis.common.xml.NodeletException (0) | 2016.01.17 |
[펌] 자바 문법 에러 No enclosing instance of type ttt (1) | 2015.11.18 |
Unhandled exception type Exception (0) | 2015.11.09 |
Error: java.lang.NoClassDefFoundError: org/junit/runners/model/MultipleFailureException (0) | 2015.11.09 |