본문 바로가기

프로그래밍./Java

[자바]next() 와 nextLine() 함수의 차이.


자바 next() 와 nextLine() 함수의 차이.

문자을 입력 받는데 next와 nextLine를 봤습니다.

nextLine()는 잘 되는데 next는 안되는 경우도 있고..

뭔가 다르긴 한데 뭔지 잘 모르겠어서 확인해 봤습니다.

일단 결과부터 이야기 하자면,

next()는 공백을 기준으로 반환.
nextLine()는 엔터키. 즉 한 줄을 반환

위에서 보이듯이 nextLine는 공백을 포함하고 한 줄 자체를 반환합니다.
하지만 next()함수는 next 다음 공백을 전까지 반환합니다.
그래서 next test 에서 next만 저장이 되는 거죠.



때문에 이를 잘못 사용하면 아래와 같은 문제가 발생합니다.


위 사진은 이 전 코딩과 동일하나 next()와 nextLine()함수의 순서만 바꾸었습니다.
발생하는 문제는 next()함수가 next 다음 공백 전까지만 인식해서 next를 반환하고
그 다음에 test를 가지고 버퍼에 담고 있다가, nextLine()을 받는 곳에서
자동으로 버퍼에서 옮겨지는 것이죠.
 
nextLine() 사용하기 :      <-여기서 새로 문자를 입력 받아야 했으나, 버퍼에 있던 test가 들어가버림.

때문에 자동으로 입력은 넘어가 버리고. test가 반환되서 변수 two에 test가 들어가 test가 출력되는 거죠.

next()함수 사용하면서 이상하게 원하는 대로 잘 안될 때가 있었는데. 이것 때문이었네요.

유용한 정보가 되셨다면 아래 손가락 버튼 한번 눌러주세요 ^-^