Backend/Java

[Java] Scanner 주의사항/ .next()와 .nextline() 차이

Deeb 2021. 9. 16. 12:54

✍Scanner 사용 시 문제점

키보드 입력 시 입력 버퍼라는 곳에 임시 저장된 후
저장된 내용 중 다음 정수, 실수, 단어, 문자열을 읽어온다. 

ex) nextInt(), nextDouble() 등

예제

System.out.print("숫자 입력 : ");
	int addsize = sc.nextInt();
	sc.nextLine();​

 

🔎문제점 : next() 또는 nextInt() 사용 후 입력 버퍼 제일 앞에 \n이 남아있다.
그래서 다음 next() 또는 nextInt()를 쓰면 제일 앞에 남아있는 \n(빈칸)을 읽어오는 상황이 발생한다.

🔎해결법 : next() 또는 nextInt() 구문 뒤에 nextLine()을 한 번 작성하여 \n(빈칸)을 읽어오게 해 입력 버퍼에 남은 \n을 제거한다.


예제 해결법

1) 

nextInt() : 입력 버퍼에서 다음 정수를 얻어온다. (띄어쓰기 또는 개행문자 전 까지)
-> nextInt() == 123

 

이렇게 작성된 코드에 123\n(입력을 위한 엔터)을 입력하게되면

입력 버퍼에서 1 2 3 \n
➡ nextline은 \n까지 읽어온다


2)

nextInt() 이후 nextline() : 입력 버퍼에서 다음 문자열을 읽어온다. (다음으로 만나는 첫 개행 문자까지(개행 문자 포함))
 -> nextLine() 으로 남아있는 개행문자가 다음으로 입력으로 넘어가지 않게 제거해준다.

 

반응형