next() 와 nextLine()의 차이와 주의점
Scanner stdIn = new Scanner(System.in);
stdIn.nextInt( );
Scanner(System.in) 을 이용하면, 키보드로 입력한 값을 얻어낼 수 있다. (*stdIn : Standard Input)
위와 같이 nextInt()를 사용할 수도 있고, 원하는 자료형에 따라 nextByte() 등도 물론 가능하다.
하지만 항상 헷갈리는 것은 next()와 nextLine()이다.
메서드 | 자료형 |
next() | String (스페이스 or 줄 바꿈 문자<Enter>로 구분) |
nextLine() | String (문자열 1줄) |
둘다 String이지만, nextLine은 띄어쓰기를 무시하고 한 줄을 입력받는다.
EX01. next() 직후 nextLine()
nextLine()은 버퍼에 <Enter>가 들어가 있는 상태라면 <Enter>만 출력해버린다.
그러므로 아래와 같이 코드를 작성하면
import java.util.Scanner;
public class nextLine {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.println("입력 값: ");
int input1 = stdIn.nextInt();
System.out.println("입력 값: ");
String input2 = stdIn.nextLine();
System.out.println("출력 값: ");
System.out.println(input1);
System.out.println("출력 값: ");
System.out.println(input2);
}
}
출력결과는 다음과 같이 된다. 즉 input1에서 <Enter>를 입력한 것이 input2으로 들어가게 되어버리는 것이다.
입력 값:
1
입력 값:
출력 값:
1
출력 값:
이런 현상을 해결하기 위해서는, EX02 와 같이 코드를 작성해주어야 한다.
EX02. next() 직후 nextLine() - <Enter> 처리
다음과 같이 두 번째 입력 값을 받을 때 먼저 <Enter>를 처리하고 나서 새로 입력을 받는 방법을 사용할 수 있다.
import java.util.Scanner;
public class nextLine {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.println("입력 값: ");
int input1 = stdIn.nextInt();
System.out.println("입력 값: ");
stdIn.nextLine();//<Enter> 처리
String input2 = stdIn.nextLine();
System.out.println("출력 값: ");
System.out.println(input1);
System.out.println("출력 값: ");
System.out.println(input2);
}
}
위와 같이 코드를 작성하면 다음과 같이 정상적으로 작동한다.
입력 값:
1
입력 값:
2
출력 값:
1
출력 값:
2
'BackEnd > Java' 카테고리의 다른 글
[Java] java.util.comparator, java.util.comparable (0) | 2022.03.16 |
---|---|
[Java] 메소드 (0) | 2021.08.23 |
[Java] DBeaver 이클립스에 연결하기 (0) | 2021.08.17 |
[Java] 웹 디자인 프로그램 Oven, adobe XD (0) | 2021.08.11 |
[Java] JSTL 연결하기 (0) | 2021.08.10 |
댓글