gsj0617   2년 전

어디서 문제가 생기는걸까요?

혹시 String으로 입력을 받아서 그런가요?

djm03178   2년 전

예제에 써있는 입력 그대로를 넣어보세요. 띄어쓰기를 임의로 넣어서도 안 되고, 개행을 임의로 넣어서도 안 됩니다. 프로그램이 끝이 나나요?

gsj0617   2년 전

네.. 6 넣고 ABBABB 입력하면 B가 출력됩니다..

djm03178   2년 전

그럴 리가 없어요. 자바의 레퍼런스를 보면, Scanner.next() 는,

"Finds and returns the next complete token from this scanner. A complete token is preceded and followed by input that matches the delimiter pattern."

여기서 delimiter라는 건 기본값으로 스트림의 끝이나, 공백, 개행, 탭 문자 등을 말하는 것이고, 이런 문자를 만나기 전까지의 모든 문자열은 전부 한 번에 받아서 줍니다.

그러니 ABBABB라고 입력했으면 temp는 ABBABB가 되는 것이지, A 하나 받고 반환하고, B 하나 받고 리턴하고 이러지 않는다는 거죠.

gsj0617   2년 전

아아 제가 잘못 이해한것 같아요..

sc.next();를 6번 반복시키는게 아니라는건가요?

djm03178   2년 전

next를 6번 반복시키면 6개의 "문자열"을 읽으려고 시도하는데, AABAAB가 이미 하나의 "문자열"입니다. 그래서 그 다음부터 또 next를 하려고 하면, 더 이상 읽을 게 없기 때문에 NoSuchElementException이 던져지는데, 이를 처리하는 catch가 없으므로 런타임 에러가 됩니다.

gsj0617   2년 전

아.. 그렇게 되는군요! 감사합니다!

djm03178   2년 전

그리고 TIE가 아니라 Tie입니다.

gsj0617   2년 전

아.. 오타도 있었군요.. 감사합니다!

댓글을 작성하려면 로그인해야 합니다.