Java/Java 문법

scanner.next() , scanner.nextInt() , scanner.nextLine()

열심히 해 2024. 9. 23. 10:34

Scanner 클래스의 next(), nextInt(), nextLine() 메서드는 각각 다른 방식으로 입력을 처리합니다.

 

 

1. next() 메서드는 다음 입력에서 토큰(공백으로 구분된 단어)을 읽어옵니다.

  • 입력에서 첫 번째 공백 전까지의 문자열을 읽습니다.
  • 공백이 있는 경우, 공백 이후의 문자열은 다음 호출 시 읽히게 됩니다.
Scanner scanner = new Scanner(System.in);
String word = scanner.next(); // "Hello World" 입력 시 "Hello"를 반환

 

 

 

 

2. nextInt() 메서드는 다음 입력에서 정수를 읽어옵니다.

 

  • 공백 또는 줄 바꿈으로 구분된 정수 값을 읽습니다.
  • 정수가 아닌 값을 입력할 경우 InputMismatchException이 발생합니다(입력 검증 포함).
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt(); // "42" 입력 시 42를 반환, "4 2" 입력 시 4를 반환

 

 

 

 

3. nextLine() 메서드는 전체 한 줄을 읽습니다.

 

  • 줄 바꿈 문자(Enter)를 기준으로 사용자가 입력한 한 줄 전체를 문자열로 반환합니다. 
  • 입력 시 줄 바꿈 문자를 포함하지 않고, 라인의 끝에서 자동으로 줄 바꿈을 처리합니다.
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine(); // "Hello World" 입력 시 "Hello World"를 반환

 

 

주의사항 !!

 

next() 또는 nextInt() 호출 후 nextLine()을 호출할 경우, 이전 호출에서 남은 줄 바꿈 문자를 처리하게 되므로 주의가 필요합니다.

 

next()  또는 nextInt() 호출 후 입력값을 받으면 줄 바꿈 문자가 남게 됩니다. 이후 nextLine()을 호출하면, 줄 바꿈 문자를 읽어서 빈 문자열("")을 반환합니다. 즉, 사용자가 입력한 줄이 없다고 간주되는 것입니다.

 

System.out.print("정수 입력: ");
int number = scanner.nextInt(); // "42" 입력
System.out.println("입력한 정수: " + number);
        
System.out.print("한 줄 입력: ");
String line = scanner.nextLine(); // 여전히 줄 바꿈 문자를 읽어 빈 문자열을 반환
System.out.println("입력한 줄: " + line); // 결과는 빈 문자열

 

이를 해결하기 위해

System.out.print("정수 입력: ");
int number = scanner.nextInt(); // "42" 입력
System.out.println("입력한 정수: " + number);

scanner.nextLine();  // 줄 바꿈 문자를 읽어 빈 문자열을 반환

System.out.print("한 줄 입력: ");
String line = scanner.nextLine(); // 위에서 빈 문자열을 반환했기 때문에, 문자열 입력값을 받게 됨.
System.out.println("입력한 줄: " + line); // 결과는 입력 받은 문자열

 

이때 4번 줄을 지우고, 2번 줄을 `int number = scanner.nextInt();scanner.nextLine(); ` 로 적어도 됩니다.

'Java > Java 문법' 카테고리의 다른 글

parse 와 강제 형변환  (0) 2024.09.23
if를 나열하는 것과 if - else if 의 차이  (0) 2024.09.23
for문을 통해 Map을 순회하기  (0) 2024.09.19
Set  (0) 2024.09.16
Java에서 난수 만들기  (0) 2024.09.13