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> 키를 기준으로 문자열을 저장한다.!!
잘 기억해두세요~
지금까지 한나미디어였습니다^^
댓글