23.04.07 JAVA

천용·2023년 4월 7일
0

JAVA

목록 보기
3/23
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);

        int num;
        String str;
        System.out.print("num입력: ");
        num = sc.nextInt();

        System.out.print("str입력: ");
        str = sc.nextLine();

        System.out.println("num:"+num);
        System.out.println("str:"+str);
        sc.close();
    }
}

출력결과
num입력: 10
str입력:

num: 10
str:

원래 원했던 입력은 숫자 1번 문자 1번 이었지만 숫자1번 입력하면 바로 출력된다. 그 이유는?
next()는 개행문자를 무시하고 입력받고 nextLine()은 한줄 단위로 입력을 받기 때문에 개행문자로 포함된다.
좀 더 직관적으로 설명하자면 위처럼 5를 입력하고 Enter를 쳤다면 버퍼에 5\n이 존재한다. 이 때 nextInt()가 버퍼의 내용을 가져올 때 분리자를 제외하고 가져오기 때문에 5만 가져오게 된다. 그러면 버퍼에 \t가 남아있는데 nextLine()은 공백문자, 개행문자인 분리자를 포함시키기 때문에 \t만 가져오고 프로그램이 종료되는 것이다.

profile
성장하는 개발자가 되자

0개의 댓글