목적
배열에 저장되어 있는 정수 중 짝수만 출력
문제
package chap1;
public class EvenNumberFinder {
public static void main(String[] args) {
int[] intArray = {3,4,7,10,15,20};
for(int i : intArray){
if(intArray[i] % 2 == 0) System.out.println(intArray[i]);
else continue;
}
}
}
// 에러 메세지
10
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
Index 7 out of bounds for length 6
at chap1.EvenNumberFinder.main(EvenNumberFinder.java:8)
문제 원인
위의 for-each문은 변수 i에 배열의 값을 하나씩 할당하며 반복한다.
그러므로 조건문에서 `intArray[i]`는 배열의 값을 인덱스 번호로 인식하고 해당 위치의 값을 출력하는 것이다.
예를 들어, 가장 첫 번째 반복에서는 intArray[0]의 값인 3이 출력되어야 하지만, 3이 `i`에 저장되어 intArray[3]을 출력한다.
배열의 크기는 6인데 세 번째 반복에서 intArray[7]의 값을 출력하라고 명령하니까 컴파일러는 먼저 intArray[3]의 값을 무사히 출력한 후,`Index 7 out of bounds for length 6`이라는 에러 메세지를 출력하게 된다.
해결 방법
package chap1;
public class EvenNumberFinder {
public static void main(String[] args) {
int[] intArray = {3,4,7,10,15,20};
for(int i : intArray){
if(i % 2 == 0) System.out.println(i);
else continue;
}
}
}
'트러블 슈팅' 카테고리의 다른 글
[Java] 계산기 프로그램 추가 기능 구현 중 발생한 오류 해결 (0) | 2025.03.05 |
---|---|
[Java] 계산기 프로그램의 출력값 오류 이슈 (0) | 2025.02.28 |
[Java] for-each문에 2차원 배열 사용 이슈 (0) | 2025.02.22 |
[Java] 런타임 에러(InputMismatch, NumberFormat) 이슈 (0) | 2025.02.20 |
[CSS] 요소 가운데 정렬 불가 이슈 (0) | 2025.02.18 |