본문 바로가기

개발일지

개발일지 09 - nextInt() 와 nextLine()에 관련된 문제

next()

next()는 Scanner클래스의 메서드인데 값을 입력받는 역할을 수행한다.

nextLine()과 다른 점은 띄어쓰기를 기준으로 나뉜다는 점인데, 문자열의 공백 이전까지의 내용을 입력받는다.만약 이 두가지를 이어서 쓰게 되면 다음과 같은 상황이 일어난다.

 

Scanner sc = new Scanner(System.in);
Stirng str1 = sc.next();
String str2 = sc.nextLine();
System.out.println(str1);
System.out.println(str2); // 출력되지 않음

 

위와 같은 상황은 next() 대신 nextInt()를 사용했을 때도 동일한 상황이 일어난다.이유는 next()와 nextInt()는 개행문자 이전 즉 엔터를 누르기 전까지의 값을 받고 다음 행으로 넘어가자마자 nextLine()에 개행문자가 들어가 버리기 때문이다.따라서 이런 상황을 방지하려면 아래와 같은 방법을 사용하면된다.

Scanner sc = new Scanner(System.in);
Stirng str1 = sc.nextLine();  // 둘다 nextLine()으로 받는다.
String str2 = sc.nextLine();
System.out.println(str1);
System.out.println(str2);

===================================

Stirng str1 = sc.next();
sc.nextLine();				// next()사용후 nextLine()을 한번 더 적어준다.
String str2 = sc.nextLine();
System.out.println(str1);
System.out.println(str2);

====================================

int a = Integer.parseInt(nextLine());  // nextLine()사용 후 형변환을 해준다.
String str2 = sc.nextLine();
System.out.println(str1);
System.out.println(str2);