nextLine(): 입력 스트림에서 한 줄을 읽음. 개행 문자를 만날 때까지 모든 문자를 읽어옴. 따라서, 공백을 포함한 문자열을 읽을 수 있음.
next(): 입력 스트림에서 공백이나 개행 문자를 만나기 전까지의 문자열을 읽어옴. 공백으로 구분된 단어를 읽을 때 주로 사용됩니다.
두 메서드의 차이점은 문자열을 읽는 범위임. nextLine()은 한 줄 전체를 읽어오기 때문에 개행 문자까지 읽음. 반면에 next()는 공백이나 개행 문자를 만나기 전까지만 읽음.
예를 들어, 입력이 "Hello World"라고 가정하면:
nextLine()을 사용하면 "Hello World" 전체를 읽어옵니다.
next()를 사용하면 "Hello"만 읽어옵니다.
따라서, 입력에 따라 어떤 메서드를 사용할지는 상황에 맞게 결정해야 함. 문자열 전체를 읽어야 할 경우에는 nextLine()을 사용하고, 단어 단위로 읽어야 할 경우에는 next()를 사용하면 됩니다.
package java20230612;
import java.util.Scanner;
public class ex10_입력_scanner {
public static void main(String[] args) {
// 입력
Scanner sc = new Scanner(System.in);
System.out.println("정수를 입력하세요.");
// Scanner 객체를 이용하여 한 줄 단위로 입력 받음
String input = sc.nextLine();
// 입력받은 문자열을 정수로 변환. 이때 ex13_입력.java숫자가 아닌 것이 섞여있으면 안됨.
int x = Integer.parseInt(input);
System.out.println(x);
// 변환 없이 정수 바로 입력 받기
System.out.println("정수를 입력하세요.");
x = sc.nextInt();
System.out.println(x);
System.out.println("정수를 입력하세요.");
input = sc.nextLine();
// input = sc.next();
x = Integer.parseInt(input);
System.out.println(x);
// System.out.println("정수를 입력하세요.");
// x = sc.nextInt();
// System.out.println(x);
}
}
java에서 위 코드를 빌드 할 경우 정수를 정확인 입력한 상태인 경우에도 22행 input = sc.nextLine(); 에서 공백값을 넣었다고 에러가 발생 한다. enter 를 입력을 한 다음 개행문자가 들어가서 에러남.
이럴 경우 nextLine()을 next() 메서드를 사용하여 잘못된 입력값을 버리고 다음 입력을 받도록 할수 있다.
input = sc.nextLine(); > input = sc.next();
package java20230612;
import java.util.Scanner;
public class ex10_입력_scanner {
public static void main(String[] args) {
// 입력
Scanner sc = new Scanner(System.in);
System.out.println("정수를 입력하세요.");
// Scanner 객체를 이용하여 한 줄 단위로 입력 받음
String input = sc.nextLine();
// 입력받은 문자열을 정수로 변환. 이때 ex13_입력.java숫자가 아닌 것이 섞여있으면 안됨.
int x = Integer.parseInt(input);
System.out.println(x);
// 변환 없이 정수 바로 입력 받기
System.out.println("정수를 입력하세요.");
x = sc.nextInt();
System.out.println(x);
System.out.println("정수를 입력하세요.");
// input = sc.nextLine();
input = sc.next();
x = Integer.parseInt(input);
System.out.println(x);
// System.out.println("정수를 입력하세요.");
// x = sc.nextInt();
// System.out.println(x);
}
}