Q&A : [Java] Scanner에서 nextInt, nextDouble 사용시 주의사항

NtoZ·2023년 4월 20일
0

error

목록 보기
3/7
post-thumbnail

문제 상황

  • 계산기를 만들다가, double firstNum = nextDouble(); 으로 더블형에 대한 입력을 받으려고 했다. 그런데 숫자를 입력하고 엔터를 클릭한 순간, 다음 입력을 받아야할 것까지 받아버렸다.
    (37행을 주석한 것을 잘 보자.)

  • 하나만 입력을 받아야하는데 개행문자까지 입력받아서 문제가 된 것이다.

문제 해결

  • nextDouble() 메서드 이후에 남아있는 개행문자를 받을
    nextLine()을 추가해주자. (값을 저장할 필요는 없다.)
  • [Java] 01. nextInt(), nextDouble() 뒤에 nextLine() 사용

    nextInt(), nextDouble() 같은 메서드를 사용한 이후 String을 입력받기 위해 nextLine()을 사용하면
    버퍼에 남아있는 \n(Enter값)을 읽어들이기 때문에 nextLine() 메서드가 바로 리턴해버린다.
    그러므로 nextLine()을 호출하기 전에 nextLine()을 한번 써주면
    버퍼에 있는 \n 읽어버리므로 그 다음 문자열이 잘 읽힌다.

참고 자료

profile
9에서 0으로, 백엔드 개발블로그

0개의 댓글