Program Language/JAVA

[JAVA]next() nextline() 차이점

Jinlib 2017. 5. 2. 01:50

Scanner클래스에서 next()와 nextLine()의 차이점

next()
공백을 기준으로 입력을 받는다. 즉, 띄어쓰기(=\\s)을 기준으로 입력을 받는다.

nextLine()
한 라인을 기준으로 입력을 받는다. 즉, 개행문자(=줄넘김)(=\n)을 기준으로 입력을 받는다.

예제를 통해 분석해보자

1. 같은 입력값을 토대로 메소드별 출력결과를 알아보도록 하자

c.f) 참고로 hasNext() 메서드는 입력된 토큰이 있으면 true 없으면 false를 반환시키는 메서드만약, 토큰에 개행문자만 남은경우 false를 반환하지만, 개행문자는 그대로 남아있다.

1) next()

next() 메소드의 경우 띄어쓰기 기준으로 읽기 때문에 A와 B 사이의 띄어쓰기가 반영 되어 출력결과가 다르게 나옴을 알 수 있다.

2) nextLine()

 

nextLine()메소드는 한 라인을 읽기 때문에 같은 라인에 있는 A와 B를 그대로 출력한다.

 

※여기서 끝낼 것이 아니라.
nextInt() 혹은 next()와 nextLine()을 섞어 사용했을때 나타나는오류를 알아야 한다.


 

2. 섞어 사용했을 때 나타나는 오류

1)입력값

2) 결과값

3) 설명

같은 입력값으로 실행을 해보면 단순히 생각해볼때 next로 '가나다라' 가져가고 nextLine으로 그 다음 '마바사'를 가져 갈것 같지만 실제로는 nextLine에는 개행문자만 들어가 있기 때문에 출력되지 않고 아래와 같은 결과값을 준다.위 상황에서의 해결방법은 두가지가 있습니다

4) 해결방법

 

 

위와 같이 scan.nextLine() 를 next()이후 입력해서 개행문자를 제거 해준다.

'Program Language > JAVA' 카테고리의 다른 글

[JAVA] ArrayList 사용법  (0) 2017.05.06
[JAVA] 문자입력받기  (0) 2017.05.06
JAVA에서 length사용법  (0) 2017.03.27
Eclipse Run as에 아무것도 안나올때  (2) 2017.03.27