Heestory

ArrayIndexOutOfBoundsException 예외 발생 원인 본문

개발(~국비)/JAVA

ArrayIndexOutOfBoundsException 예외 발생 원인

까만밀가루 2022. 10. 27. 10:32
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.

문장을 split으로 잘라 배열에 넣은 다음, 각 문자의 길이를 비교하여 긴 단어를 출력하려 했는데 자꾸 

ArrayIndexOutOfBoundsException 에러가 발생했다.

 

처음 작성한 코드

    public String solution(String str){
        String answer ="";
        String[] s = str.split(" ");
//        System.out.println(Arrays.toString(s));
//        System.out.println("배열 길이값: "+s.length);
//        System.out.println("값 확인: " +s[0] );
//        System.out.println("값의 길이 확인: "+s[0].length());
        for(int i=0;i<s.length;i++){
            if(s[i].length() > s[i+1].length()){
                answer = s[i];
            }
        }
        return answer;
    }

 

ArrayIndexOutOfBoundsException

:인덱스가 배열의 크기보다 크거나 음수 인덱스에 대한 요청이 있으면 자바는 위의 예외를 발생

 

for문 이후부터 에러가 발생했는데 원인은 

s[i].length > s[i+1].length 에서 i가 1일 경우 s[2]가 없기 때문에 발생한 것..!

 

그래서 코드 수정

    public String solution(String str){
        String answer ="";
        String[] s = str.split(" ");
        int m = Integer.MIN_VALUE; //최소값 선언
        for (String x : s){
            int len = x.length();
            if(len>m) {
                m = len;   //길이 len이 크면 m 값 변경, 없다면 m값은 계속 정수 최소값으로 진행
                answer = x;
            }
        }
        return answer;
    }

 

'개발(~국비) > JAVA' 카테고리의 다른 글

[JAVA]Thread  (0) 2023.04.11
[JAVA]Future  (0) 2023.04.10
[JAVA]subList  (0) 2023.04.10
JAVA)배열 출력 하는 방법  (0) 2022.10.27