[Java] Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException - 인덱스 오류

epiphany·2022년 10월 20일
0

Programmers School

목록 보기
5/22
post-thumbnail

🛫 Programmers School 중 배열 뒤집기 Java Coding 과정에서 발생한 오류


📑 오류 메세지

// code
class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length];
        int cnt = 0;
        if (1<=num_list.length && num_list.length<=1000){
            for (int i=num_list.length; i+1>0; i--){
                if (0<=num_list[i] && num_list[i]<=1000){
                    answer[cnt] = num_list[i];
                    cnt++;
                }
            }
        }
        return answer;
    }
}

// error message
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 
Index 6 out of bounds for length 6
	at Solution.solution(Unknown Source)
	at SolutionTest.lambda$main$0(Unknown Source)
	at SolutionTest$SolutionRunner.run(Unknown Source)
	at SolutionTest.main(Unknown Source)

💻 원인

  • for문에서 int i를 num_list.length로 했었는데 이렇게 인덱스 넘버로 들어가게 되면 없는 인덱스가 됨(num_list가 5일때 index는 0~4이기 때문)

💡 해결

  • int i=num_list.length-1 로 작성하기
class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length];
        int cnt = 0;
        if (1<=num_list.length && num_list.length<=1000){
            for (int i=num_list.length-1; i+1>0; i--){
                if (0<=num_list[i] && num_list[i]<=1000){
                    answer[cnt] = num_list[i];
                    cnt++;
                }
            }
        }
        return answer;
    }
}

0개의 댓글