본문 바로가기
★프로그래밍★/자바오류(에러)

[자바 오류] Exception in thread main java.util.NoSuchElementException at java.util.Scanner.throwFor ..

by 한나미디어 2018. 12. 1.

 

4일만에 자기소개서부터 면접 준비까지, 한번에 !

 


java.util.Scanner 클래스를 사용하다 보면

아래와 같은 오류가 발생할 때가 있죠?

 


 

Exception in thread main java.util.NoSuchElementException 

at java.util.Scanner.throwFor

 

 

이 경우는

Scanner 객체 사용 종료로 인해

오류가 종종 발생!!

 

아래의 코드 예제를 살펴보면,

Scanner 클래스를 한 파일에 두개 생성한 것을 볼 수 있어요.

 

 

 

 

Scanner 클래스가 사용하는 "System.in"의 특징을 안다면,

이부분이 해결될 꺼예요.

 

System.in은 실행프로그램에서 하나만 생성이 되고,

이를 여러개의 객체들이 공유하는 형태이구요.

 

이 때문에 특정 객체가 scan.close(); 를 실행하게 되면,

다른 객체들이 공유하고 있는 System.in 도 닫히게 됩니다.

 

 

즉!!

응용 프로그램 전체에서 Scanner 객체는 하나만 생성하고, 

공유하는 방법을 사용할 것을 권장합니다~ ^^

 

 

 

 


 

#Scanner 사용시, 주의 해야 할 점

 

코드 문법 오류는 아니지만, 프로그램 실행 도중에 오류가 발생하거나,

 

개발자가 원하던 결과값이 나오지 않을 경우가 있답니다~

아래 예제는 주소를 입력하는 예제예요

 

 

 

 

하나는 nextLine(); 메소드를 사용하였고,

다른 하나는 next(); 를 사용하여 주소를 입력받았어요.

 

2번째 입력과 출력부분을 살펴보면,

결과값이 제대로 출력되지 않았죠?

 

 

즉,

next() 메소드는 공백이 끼여있는 문자열들을 읽을 수 없어요

공백을 기준으로 문자열을 저장하는 방식이예요

 

nextLine() 메소드는

<Enter> 키를 기준으로 문자열을 저장한다.!!

 

잘 기억해두세요~

 

지금까지 한나미디어였습니다^^

댓글