java.util.NoSuchElementException
2017. 4. 13. 09:32ㆍetc/error
java.util.NoSuchElementException 발생 시 해결방법
NoSuchElementException은 흔하게 발생할 수 있다.
NoSuchElementException이란 쉽게 말해서 공간이 없다는 것이다.
즉 비어있는, 없는 공간의 값을 꺼내려고 하면 발생한다.
나같은 경우에는 StringTokenizer 객체를 사용하여 특정문자열을 분리하고
while 문을 통해서 값을 하나씩 꺼내는 중이였다.
바보처럼 nextToken을 2번 호출하고 있었다.
1
2
3
4
5
6 |
StringTokenizer token = new StringTokenizer(str, ",");
List list = new ArrayList<String>();
while (token.hasMoreTokens()) {
System.out.println("token.nextToken() : " + token.nextToken());
list.add(token.nextToken());
} |
cs |
token에 값이 뭐가 들어있나 Console에 Log를 찍어보려고 nextToken함수를 써버린 것이다.
두번 쓰여졌으니 한번 가져와야할껄 2번씩 가져오게 됬다.
배열이 1 이라면 4#에서 한번 꺼냈고 5#에서 꺼내려고 할 때 오류를 발생시키는 것이다.
다음과 같이 소스를 수정하여 해결하면 된다.
1
2
3
4
5
6
7 |
StringTokenizer token = new StringTokenizer(str, ",");
List list = new ArrayList<String>();
while (token.hasMoreTokens()) {
String nextToken = token.nextToken();
System.out.println("token.nextToken() : " + nextToken);
list.add(nextToken);
} |
cs |
4# 처럼 next값을 변수에 담아 사용해야 한다.
위와 같은 경우는 Iterator 에서 next() 함수를 사용할 경우에도 발생할 수 있다.