Scanner - nextLine(), nextInt() 비교

2023. 1. 6. 18:00프로그래밍 언어/JAVA

import java.util.Scanner;

public class Test01 {
	public static void main(String[] args) {
    	Scanner scanner = new Scanner(System.in);
        
        System.out.println("========== 스캐너 테스트 ===========");
        int num1 = scanner.nextInt();
        System.out.println("num1 : "+num1);
        
        int num2 = scanner.nextInt();
        System.out.println("num2 : "+num2);
        
        String str = scanner.nextLine();
        System.out.println("세번째 문자열 : "+str);
        
        String str2 = scanner.nextLine();
        System.out.println("네번째 문자열 : "+str2);
        
    }
}

-> 이 코드에서 문제는 무엇인가?

 

바로 출력을 받을 때 세번째 문자열은 출력이 되지 않는다는 것이다.

그 이유는 nextLine9)은 버퍼에 남아있는 Enter를 통째로 가져오는 것으로,

앞에서 nextInt() 두번 사용을 통해 숫자를 가져왔지만 숫자를 가져옴으로써 

Enter를 두번 쳤을 때 처리되지 않은 Enter들은 버퍼에 그대로 남아있고 

세번 째 문자열을 받는 nextLine()이 들어왔을 때 남은 Enter들을 읽어온다.

그렇기 때문에 아무것도 치지 않았는데 빈칸으로 나오는 것이다.

 

이러한 문제를 해결하기 위해서 어떻게 해야할까?

 

int num2를 받고 그 다음에 sc.nextLine()을 통해 남은 Enter들을 회수하면 깔끔하게 처리할 수 있다. 

 

 

 

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

배열 - 얕은 복사/ 깊은 복사  (0) 2023.01.10
Scanner - next()  (0) 2023.01.06
3 - 제어문  (0) 2023.01.03
2- 연산자(Operator)  (0) 2023.01.02
1 - 변수(variable)  (0) 2023.01.02