Scanner로 String 입력 - next( )와 nextLine( )

next( )와 nextLine( ) 모두 Scanner로 String을 입력받을 때 사용하는 것이고, 리턴타입이 String이므로 숫자나 다른 형태로 입력받고 싶을 땐 형변환을 적절하게 해주어야한다! ex) int num = Integer.parseInt(line[1].charAt(0)) char cmd = line[1].charAt(0)

next( ) : 문자 또는 문자열을 공백을 기준으로 한 단어 또는 한문자씩 입력 받는다.

String s = sc.next();//s = Hello Java

System.out.println(s);//Hello 

nextLine( ) : 문자 또는 문장 한 라인 전체를 입력받는다. '\n' 을 포함하는 한 라인을 읽고 '\n'을 버린 나머지만 리턴한다.

String s = sc.nextLine();//s = Hello Java

System.out.println(s);//Hello Java

nextInt( )와 nextLine( ) 섞어 사용할 경우 주의 필요

import java.util.Scanner;
 
public class JavaScanner{
 
    public static void main(String[] args) {
        
        Scanner scan = new Scanner(System.in);
        String name;
        int age;
             
        System.out.println("나이를 입력하세요.");
        age = scan.nextInt();
        System.out.println("이름을 입력하세요.");
        name = scan.nextLine();
 
        System.out.printf("나이는 %d입니다.%n",age);
        System.out.printf("이름은 %s입니다.%n",name);

 scan.close();

    }
 
}

실행 결과 나이를 입력하세요 25 이름을 입력하세요. 나이는 25입니다. 이름은 입니다.

nextInt( )와 같이 타입을 지정해서 받는 메소드는 'Enter' 값을 무시하고 해당 타입만 받아 변환하여 반환하는데 이때 컴퓨터 내부에서는 'Enter' 값이 아직 남아있기 때문에 nextLine( )에서 'Enter' 값을 받아들이고 그대로 입력되어 종료된다. 그렇기 때문에 nextInt( )와 그 다음에 nextLine( )을 함께 사용할 경우 중간에 nextLine( )을 한번 더 사용해주거나 next( )를 사용한다.

명령어(String) 입력받을 때 - nextLine( ) 사용

  1. String str = sc.nextLine( );

  2. String[ ] line = str.split(" ");

  3. String cmd = line[0] 또는 char cmd = line[0].charAt(0)

또는 next( ) 사용

  1. String cmd = sc.next( )

Last updated