import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a =  sc.nextInt();
        //sc.nextLine();
        System.out.println(a);
        String s = sc.nextLine();
        System.out.println(s);
    }

}

 

nextInt는 엔터를 버퍼에 남기기 때문에

다음에 s를 입력하기 전에 엔터가 남아있어서

공백이 출련된다.

 

이것을 수정하기 위해 

sc.nextLine()을 사용하면

엔터의 버퍼를 지워주기 때문에

다음 문자를 입력할 수 있다.

 

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a =  sc.nextInt();
        sc.nextLine();
        System.out.println(a);
        String s = sc.nextLine();
        System.out.println(s);
    }

}

 

 

 

숫자만 입력 두번 할 시

nextLine()이 필요없다.

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a =  sc.nextInt();
        //sc.nextLine();
        System.out.println(a);
        int s = sc.nextInt();
        System.out.println(s);
    }

}

 

 

 

 

package HelloWorld.src.fc.java.part3;

import java.util.Scanner;

public class CarTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("자동차 일련번호:");
        int carSn = scanner.nextInt();

        scanner.nextLine();

        System.out.print("자동차 이름:");
        String carName = scanner.nextLine();

        System.out.print("자동차 가격:");
        int carPrice = scanner.nextInt();

        scanner.nextLine();

        System.out.print("자동차 소유자:");
        String carOwner = scanner.nextLine();

        System.out.print("자동차 연식:");
        int carYear = scanner.nextInt();

        scanner.nextLine();

        System.out.print("자동차 타입:");
        String carType = scanner.nextLine();

        System.out.println(carSn + "\t" + carName + "\t" + carPrice + "\t" + carOwner + "\t" + carYear + "\t" + carType);

    }
}

 

 

이런식으로 중간에 scanner.nextLine();을 생략하면 마지막에 타입을 입력하지 못하고

바로 출력되는 경우가 생긴다.

그렇다고 모든 입력 끝에 scanner.nextLine();을 작성하진 않는다.

 

왜일가?

 

nextInt() 또는 nextDouble() 후에 nextLine()을 추가로 호출하는 이유는,

숫자 입력 후 남아 있는 줄바꿈 문자가 이후 nextLine()에서 처리되는 것을 방지하기 위해서이다.

'Java' 카테고리의 다른 글

생성자 매개변수  (1) 2025.02.13

+ Recent posts