개발 무지렁이

[Java] Scanner클래스와 버퍼의 개행문자 본문

Backend/자바

[Java] Scanner클래스와 버퍼의 개행문자

Gaejirang-e 2023. 3. 12. 14:11
❓ Scanner 클래스란:
적은 양의 데이터를 가볍게 받아서 처리할 때 (java.util.Scanner)

nextInt(), next()


공백없이 정수/문자열 입력 개행문자('\n') 무시

nextLine()


공백있는 문자열 입력, 한줄 개행문자('\n') 무시x

❗ nextInt(), next() 다음에 nextLine()을 하면?
버퍼에 남아있는 개행문자를 nextLine()이 바로 읽어버린다.
import java.util.Scanner;

public class ScannerAndNextLineTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("이름: ");
        sc.next();
        System.out.print("나이: ");
        sc.nextInt();
        System.out.print("주소: ");
        sc.nextLine(); // \n이 입력되어 바로 넘어간다
        System.out.println("end..");
    }

}
📖 해결방법
: sc.nextLine();로 개행문자를 비운다.
import java.util.Scanner;

public class ScannerAndNextLineTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("이름: ");
        sc.next();
        System.out.print("나이: ");
        sc.nextInt();

        //개행문자 비우기
        sc.nextLine();

        System.out.print("주소: ");
        sc.nextLine(); // 버퍼에 개행문자를 비웠으므로 입력할 수 있다
        System.out.println("end..");
    }
}
Comments