sin prisa pero sin pausa

[JAVA] Scanner의 단점과 해결방법 본문

더 알아보고 싶은데?

[JAVA] Scanner의 단점과 해결방법

EstherDmt 2021. 3. 24. 23:04
반응형

출처 : https://www.journaldev.com/872/scanner-class-in-java

문자를 받아오는 

   next()    nextLine()   사이에서의 문제가 발생한다. 

 

next()공백을 신호로 단어를 받아오며 엔터를 눌러 입력했을 때 엔터(\n)는 받아오지 않는다. 

이럴 때, next()를 입력하고 나면 buffer에는 엔터(\n)가 그대로 남아있게 된다. 

 

nextLine()엔터를 신호로 문자열을 받아오기 때문에 엔터를 끝으로 입력 값이 마쳐지게 된다.

 

그렇기 때문에 만약 next() 다음에 nextLine()를 사용할 시, 

nextLine()은 버퍼에 남아있던 엔터(\n)를 그대로 꺼내오면서 nextLine()의 특성에 맞게

아무리 값을 입력해도 엔터만이 입력값에 들어간 채 입력이 마쳐지게 된다.

 

해결 방법:

next()와 nextLine() input 값 사이에 nextLine() 메소드를 한 번 더 넣어준다.

이로 인해 buffer에서 엔터를 꺼내오기 때문에 새로운 값이 들어갈 때 문제 없이 잘 입력 되도록 해준다. 

어떤 변수에도 할당하지 않기 때문에 정말 엔터를 꺼내주는 용도로만 사용된다. 

 

 

반응형