[Java] Scanner 클래스 특징, nextLine() 오류나는 이유

고동이의 IT·2021년 11월 3일
2

Java

목록 보기
16/37
post-thumbnail

Scanner 메서드 특징

1) nextLine이 아닌 메서드들 즉, next(). nextInt(), nextDouble()

  • 사이띄기, tab키, enter키를 구분문자로 분리해서 분리된 자료만 읽어간다.
    사이띄기, tab키, enter키는 남겨짐

2) nextLine()

  • 한 줄 단위로 입력한다. 즉 자료를 입력하고 Enter키를 누르면 Enter키까지 읽어간다.

nextLine입력안했는데 넘어간것처럼 보이는 이유

nextLine() 쓰기전에 nextLine()이 아닌 메서드들 사용후
입력버퍼를 검사했더니 enter키 = 데이터가 남아있어서 그 enter키를 가져가서 사용한것..

		System.out.println("이름>");
	        name =sc.next(); 에서 홍 길 동
	        System.out.println("번호>");
	        num = sc.nextInt(); 

next는 사이띄기, tab키, enter키로 분리해서 데이터를 가져가기 때문에 이렇게 입력하면 홍만 가져감
길 이랑 동은 어디로 갔을까요?입력버퍼에 남아있음,,
그래서 num입력받을때 오류 남.

해결 방법

nextLine직전에 scan.nextLine()을 한번 더써서 입력버퍼를 비워준다.

 int input = sc.nextInt();
 sc.nextLine(); // 입력버퍼를 비워주는 역할을 한다.
 System.out.println("이름>");
 name =sc.nextLine();
profile
삐약..뺙뺙

0개의 댓글