[이슈해결] Java - java.lang.ArrayIndexOutOfBoundsException
Error Message: java.lang.ArrayIndexOutOfBoundsException
🌰 오류메시지
1 | // Error Message |
💎 문제상황
지원 회사의 온라인 코딩테스트에 응시하다가 에러가 발생했습니다. 해당 에러는 최근에 제가 자주 접했던 에러입니다. 아래 코드의 의도는 개행문자 단위로 한 번에 입력을 받아 처리하고, 문자열과 숫자를 따로 분리하려고 했습니다. String[] input = br.readLine().split("\\n");
에서 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
에러가 발생했고, 이를 처리하기 위해 알아보았습니다.
🧩 예시코드
1 | // Wrong Code : Error가 발생한 Full Code입니다. |
예시 입력값]
12
enqueue 1
enqueue 2
enqueue 2
enqueue 1
enqueue 2
dequeue
dequeue
dequeue
dequeue
dequeue
enqueue 7
dequeue
🔑 해결방안
예시 입력값을 보시면 dequeue와 enqueue가 번갈아 나옵니다. String[] input
에서 한 번에 입력받지 않고, for문을 사용하여 한 줄씩 입력받는 방식으로 변경하여 에러를 해결했습니다.
1 | // Right Code : Error를 해결한 Full Code입니다. |
위의 코드에서 Error
가 발생했던 입력문을 Solving
부분으로 바꿔주어 에러를 해결할 수 있었습니다. 해당 이슈에서는 ArrayIndexOutOfBoundsException
에러가 난 이유가 br.readLine()
에 이미 강제개행이 포함이 되어 있어, 없는 문자에 접근하는 것으로 이해했습니다. 개행문자 단위로 입력을 받을 경우, 위의 내용처럼 입력을 받는 것이 낫다는 것을 알게 되었습니다.