리얼라이져의 마케팅, 개발, 창업 블로그

자바 nextInt() 다음에 nextLine() 실행 안되는 현상 본문

IT/자바

자바 nextInt() 다음에 nextLine() 실행 안되는 현상

nadadhl 2020. 2. 2. 23:59
728x90

자바 Scanner 를 이용해서 nextInt() 를 이용해 숫자를 출력하고

nextLine()을 이용해 문장을 출력하려고 하는데, nextLine()이 안되는 현상을 발견했다.

 

 

아래 코드를 보자.

public class Main{

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//이안에서 코드가  작동한다.
		
		Scanner sc=new Scanner(System.in);
		
		int number=sc.nextInt();
		String sentence= sc.nextLine();
        
        
		System.out.print("숫자-> ");
                System.out.println(number);
                System.out.print("문장 입력->  ");
                System.out.println(sentence);
		
		
 
	}
	
}//main 클래스 끝

 

 예상하는  결과는   아래와 같았다.

 

예상 결과-  number에  '3'입력,  sentence에  'abcdefg'  입력

---------------------------------------

숫자 -> 3 

문장 입력-> abcdefg

---------------------------------------

 

하지만  결과는  

 

숫자->3
str 입력> 

 

이었다.  

 

 

숫자를  입력하고 나니까  바로  프로세스가  끝나버렸다.  

 

이유가 뭘까??

 

원인은 다음과 같았다.

나는 nextInt()에  3을 넣고  nextLine()을 작성하기 위해서  enter키( 개행문자=\n )를 쳤는데,  

nextInt()는  개행 문자는 입력 받지 않는다고 한다. 

 

그래서 nextInt()에  3을  넣고  enter키를  치게되면,  \n(개행문자)는  버퍼에 남게 되고 

nextLine()에서는 내가 문장을 치기전에  입력 버퍼에 남은 \n을  먼저 받아들여  그대로 넘어가는 거였다.

nextLine()은  그 Line 전체를 받기 때문에  \n도  해당  줄에 있는 경우 받는다. 

 

 

그래서 이 문제를 해결하기 위해   다음과 같이 바꿔보았다.

 

 

public class Main{

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//이안에서 코드가  작동한다.
		
		Scanner sc=new Scanner(System.in);
		
		int number=sc.nextInt();
		
		sc.nextLine();
		
		String sentence= sc.nextLine();
		
		
		
		System.out.print("숫자-> ");
                System.out.println(number);
                System.out.print("str 입력->  ");
                System.out.println(sentence);
		
		
 
	}
	
}//main 클래스 끝

 

int number=sc.nextInt(); 와  String sentence= sc.nextLine(); 사이에

 

sc.nextLine();을  추가해  ->  nextInt()후  남은  \n(개행문자를)  sc.nextLine()에  넣어 버리고  버퍼를 비웠다.

 

그렇게 하니  다시  String sentence= sc.nextLine();에서  입력값을 받을수 있었다.

 

 

끝~

 

 

개발자가 되기 위해  공부 중인  비전공자  학생입니다. 
아직 부족하여,  부족하거나  틀린 내용이 있을수 있으니,  
그부분에 대해서  생각을  댓글로 공유해주시면  

감사하겠습니다.^^

'IT > 자바' 카테고리의 다른 글

Public, Protected,Private, default 차이점  (0) 2019.04.11
Comments