-
[Java] next()와 nextLine() 차이와 사용법IT Study/컴퓨터 기초 2023. 3. 24. 10:36728x90
"next 말고 nextLine만 사용하면 안 돼?"
"안됩니다.."
next()와 nextLine()은 Scanner 클래스에서 사용하는 메서드입니다.
이들을 사용하다보면 어떤 상황에서 어떤 메서드를 사용해야할지 많이 고민됩니다.
이번 블로그 글을 정리하며, 이들의 차이를 정확히 확인하겠습니다.
next() 메서드
공백문자(띄어쓰기 " ", 탭 "\t", 개행문자 "\n" 등) 이전의 문자열만 입력받아 처리합니다.
nextLine() 메서드
개행문자(\n)를 포함한 문자열 1줄을 입력 받아 처리합니다.
개념만 읽으면 이해가 잘 되지 않을 수도 있으니, 아래의 예시를 보며 확인해봅시다.
import java.util.Scanner; public class nextStudy { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("입력 > "); String str1 = sc.next(); System.out.println("str1 -> " + str1); String str2 = sc.next(); System.out.println("str2 -> " + str2); System.out.print("입력 > "); String str3 = sc.next(); System.out.println("str3 -> " + str3); String str4 = sc.nextLine(); System.out.print("str4 -> " + str4); } }
입력 > a a
str1 -> a
str2 -> a
입력 > a a
str3 -> a
str4 -> a위 코드에는 입력 받을 수 있는 라인이 총 4개입니다.
그러나 실제로 제가 입력한 값은 2번뿐입니다.
왜 그런걸까요?
1. next()는 공백 전까지의 값만을 가져가며, 문자열 앞 부분의 공백도 무시합니다.
System.out.print("입력 > "); String str1 = sc.next(); // str1에 'a a'(a공백a엔터) 입력 시 System.out.println("str1 -> " + str1); // str1은 공백 전의 문자 'a'만 데려갑니다. String str2 = sc.next(); // 이후 str2는 입력하지 않아도 앞에 남아있던 ' a'(공백a엔터)를 받고 System.out.println("str2 -> " + str2); // str2는 공백과 엔터를 무시하고 'a'만 데려갑니다.
2. nextLine()은 개행문자(엔터)까지 모든 값을 읽어옵니다. 따라서 공백도 문자열의 일부로 생각하여 모두 읽어옵니다.
System.out.print("입력 > "); String str3 = sc.next(); // str3에 'a a'(a공백a엔터) 입력 시 System.out.println("str3 -> " + str3); // str3은 공백 전의 문자 'a'만 데려갑니다. String str4 = sc.next(); // 이후 str4는 입력하지 않아도 앞에 남아있던 ' a'(공백a엔터)를 받고 System.out.println("str4 -> " + str4); // str4는 공백과 엔터를 모두 포함하여 ' a'(공백a)가 출력됩니다. ↵ // 엔터(개행문자) 포함으로 인해 커서는 다음 줄에 놓여있습니다.
🔥총 정리
next() 또는 nextInt() 등은 개행문자(공백, 엔터, 탭)을 무시한다.
nextLine()은 개행문자를 모두 읽어오기 때문에, nextLine() 실행 후 어떤 값도 버퍼에 남아있지 않는다.
☝️next() 사용
공백이나 탭이 포함되어있지 않은 숫자 등을 입력받을 때는 next()를 사용하되,
그 뒤에 nextLine()을 한번 더 작성하여 버퍼에 남아있던 엔터를 정리하는 것이 좋다.
(공백이나 탭을 잘못 입력했을 경우 무시하기 때문에 정상 출력 가능)
☝️nextLine() 사용
공백이나 탭이 포함되어있는 문장(문자열) 등을 입력받을 때는 nextLine()를 사용한다.'IT Study > 컴퓨터 기초' 카테고리의 다른 글
[Java] String, StringBuffer, StringBuilder (0) 2023.03.26 [Java] 변수와 메모리 (0) 2023.03.24 [Java] String 클래스의 equals(), ==, = 의 차이점 (0) 2023.03.23 [Java] StringTokenizer (0) 2023.03.15 [Java] BufferedReader와 BufferedWriter (입출력 속도) (0) 2023.03.15