본문 바로가기
BackEnd/Java

[Java] next() 와 nextLine()의 차이와 주의점

by summer_light 2021. 8. 23.

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

댓글