import java.util.Scanner;
public class Check {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
// 1. next 후 nextLine 사용 시
print("[ 문제점 ]");
print("1번 입력");
print(next());
print("2번 입력");
print(nextLine());
/*
** 문제 **: nextLine 입력도 안했는데 프로그램 종료됨
** 원인 **: 1번 입력 next() 함수는 사용자가 입력 할 때 누르는 Enter
* 키로 발생하는 newline (\n) 문자를 받을 수 없어서 스캐너에 남아 있게됨
* 2번 입력 nextLine() 함수가 실행되는 즉시 사용자가 입력하기도 전에
* 남아 있던 newLine이 nextLine() 함수에게 소모되고 함수도 종료됨
*/
/* 해결법 1 */
print("[ 해결법1 ]");
print("1번 입력");
print(next());
if(sc.hasNextLine()) {
nextLine();
}
print("2번 입력");
print(nextLine());
/*
* 1번 입력 받은 후 스캐너에 남아 있는 newline을
* nextLine() 함수를 추가하는 걸로 소모한다
* */
/* 해결법2 */
print("[ 해결법2 ]");
String[] tokens = nextLine().split(" ");
for (String s : tokens) {
System.out.print(s + " ");
}
/*
* nextLine 으로 공백을 포함한 행 전체 (Enter 키 누르기 전까지)를
* 한번에 입력 받고 배열로 저장한다
* */
}
static void print(String s) {
System.out.println(s);
}
static String next() {
return sc.next();
}
static String nextLine() {
return sc.nextLine();
}
}
댓글
댓글 쓰기