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 |