자바에 대한 감각을 더 기르고자 요즘 프로그래머스 문제를 자바로 풀고 있다.
파이썬으로 백준을 플래티넘까지 찍으니까 손에 파이썬이 익어서, 대부분 하나하나 쳐줘야 하는 자바를 익히기에는 쉽지가 않다...
그래도 나름 기본적인 것들은 알아서 이제 조금씩 문제 푸는 속도가 올라가고 있는 상황이다.
평화롭게 문제를 풀던 중, split
을 사용해서 문자열을 배열 형태로 쪼개야 할 부분이 있었다.
String[] date = today.split(".");
이렇게 코드를 작성한 후 실행을 돌렸더니 계속 다음과 같은 에러가 떴다.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
대충 해석해보니, 배열의 길이가 0인데, 인덱스 0으로 접근하려 해서
문제가 발생한 것 같았다.
근데 아무리 찾아봐도 그럴만한 부분이 생기지 않아서 골머리를 앓던 중, split
에 문제가 있지 않을까하여 구글링을 해보니 그 이유를 찾을 수 있었다.
모두들 잘 알다시피 split
은 공백 또는 특정 문자를 기준으로 문자열을 쪼개어 배열로 반환해주는 메소드이다.
공백은 split(" ")
으로, 특정 문자는 split("-")
와 같은 식으로 인자에 넣어주면 된다.
하지만 split(".")
만 오류가 발생한다.
왜냐하면 인자에 들어가는 String 토큰이 regex 정규식이고, 정규식에서 .
은 어떠한 한 글자를 의미하기 때문에 결국 모든 문자를 토큰으로 인식하여 배열에 남는 것이 없게 된다.
이 때문에 .
를 기준으로 나누어 주려면, split("\\.")
로 작성해주어야 한다.
(참고한 블로그: https://mytory.net/archives/285)
split
메소드 부분만 고치니 바로 클리어를 할 수 있었다. (편안)
역시 아직 모르는 것 투성이인 듯하다.
그래도 새로운 걸 알아가는 게 공부의 묘미이지 않을까. 나중에는 이런 재미도 잘 못 느낄 것 같다.