Java
[Java] nextLine()과 next()의 차이와 주의사항
지금회
2023. 12. 6. 20:45
728x90
Java에서 nextLine()
과 next()
는 Scanner
클래스를 사용하여 입력을 받을 때 사용되는 메서드로, 두 메서드 간에는 몇 가지 중요한 차이가 있습니다.
nextLine()
메서드:- 한 줄 전체를 입력으로 받아들입니다.
- Enter 키를 누를 때까지의 모든 문자열을 읽어들입니다.
- 개행 문자 (
\n
)를 포함하여 입력을 반환하므로, 엔터 키를 입력으로 처리하고자 할 때 유용합니다.
Scanner scanner = new Scanner(System.in); System.out.print("이름을 입력하세요: "); String name = scanner.nextLine();
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