Java

[Java] next() & nextLine()

bornsoon 2025. 5. 27. 14:53

Scanner에서 입력값을 받을 때 next() (nextInt(), nextDouble()) 와 nextLine()이 있는데 이 둘 메소드는 비슷하면서도 차이점이 있다.

 

next()

  • 구분자 : 공백(white space), tab(\t), 개행문자(Enter)(\n)
  • 문자열 내에 구분자는 포함되지 않는다.


nextLine()

  • 구분자 : 개행문자(Enter)(\n)
  • 문자열 내에 개행문자가 포함된다.

 

개행문자가 포함되는지 않되는지를 잘 구분해야 아래와 같은 오류를 피할 수 있다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        
        System.out.print("1. 정수 입력: ");  // "10\n" (10 + 엔터키 누름)
        int firstInput = sc.nextInt();

        System.out.print("2. 문자열 입력: "); // 바로 다음으로 건너뜀
        String secondInput = sc.nextLine();
                
        System.out.print("3. 문자열 입력: "); 
        String thirdInput = sc.next();
    }
}

/* 
입력값 : 10
        안녕하세요.
        안녕히 계세요.
*/

/*
출력값 : 1. 정수 입력: 
         10
         2. 문자열 입력: 

         3. 문자열 입력: 
         안녕하세요.

 

두 번째 nextLine()에서 원하는 입력값을 출력 못하는 이유는

첫 번째 입력 받을 때 썼던 메소드 next()가 개행문자(엔터, '\n')를 포함하지 않고 남겨두기 때문이다.

그래서 다음 문자 입력에서는 '\n'만 입력 받고 종료되어 버린다.

이러한 이유때문에 결국에는 입력값 세 줄 중 제대로 출력된 것은 첫 번째 줄과 개행문자, 두번째 줄뿐이다.

728x90

'Java' 카테고리의 다른 글

[Java] ConcurrentHashMap  (0) 2025.06.03
[Java] split와 정규식  (0) 2025.05.31
[Java] HashMap의 key에 클래스를 사용하면?  (0) 2025.05.26
[Java] Optional 클래스  (0) 2025.05.21
[IntelliJ] 단축키  (0) 2025.05.11