지금을 사는 사람

[Java] nextLine()과 next()의 차이와 주의사항 본문

Java

[Java] nextLine()과 next()의 차이와 주의사항

지금회 2023. 12. 6. 20:45
728x90

Java에서 nextLine()next()Scanner 클래스를 사용하여 입력을 받을 때 사용되는 메서드로, 두 메서드 간에는 몇 가지 중요한 차이가 있습니다.

  1. nextLine() 메서드:
    • 한 줄 전체를 입력으로 받아들입니다.
    • Enter 키를 누를 때까지의 모든 문자열을 읽어들입니다.
    • 개행 문자 (\n)를 포함하여 입력을 반환하므로, 엔터 키를 입력으로 처리하고자 할 때 유용합니다.
    Scanner scanner = new Scanner(System.in);
    System.out.print("이름을 입력하세요: ");
    String name = scanner.nextLine();
  2. next() 메서드:
    • 공백 이전까지의 문자열만 읽어들입니다.
    • 다만, 입력 버퍼에서 공백 전까지의 문자열을 가져오기 때문에, 다음 nextLine()을 호출할 때 문제가 발생할 수 있습니다.
    Scanner scanner = new Scanner(System.in);
    System.out.print("단어를 입력하세요: ");
    String word = scanner.next();

주의사항:

next()nextLine()을 혼합해서 사용할 때 주의해야 합니다. next()는 공백 이전까지의 문자열만을 읽기 때문에, 다음 nextLine()에서 개행 문자를 읽어들일 수 있습니다. 이런 경우를 방지하려면 nextLine()을 한 번 더 사용하여 개행 문자를 소비하도록 할 수 있습니다.

Scanner scanner = new Scanner(System.in);
System.out.print("이름을 입력하세요: ");
String name = scanner.nextLine();

System.out.print("나이를 입력하세요: ");
int age = scanner.nextInt();  // 이 때 개행 문자를 처리하기 위해 nextLine()을 추가로 호출합니다.
scanner.nextLine();  // 개행 문자 소비

System.out.print("직업을 입력하세요: ");
String job = scanner.nextLine();

이렇게 함으로써 nextLine()이 개행 문자를 읽지 않도록 할 수 있습니다.

 

728x90

'Java' 카테고리의 다른 글

[Java] 컬렉션 (Collection)  (1) 2023.12.12
[Java] 리터럴 풀 (literal pool)  (0) 2023.12.12
[Java] 람다 표현식(Lambda)  (1) 2023.12.07
[Java] 익명 클래스(Anonymous Class)  (1) 2023.12.07
[Java] 배열  (0) 2023.12.06