마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리스트에서 값을 넣었는데 널 값이 납니다.

0 추천
TreeMap<String, Double> tm = new TreeMap<String, Double>();
ArrayList<String> resultList = new ArrayList<String>();
		ArrayList<Double> dou_list = new ArrayList<Double>();
		ArrayList<String> str_list = new ArrayList<String>();
		for (String key : tm.keySet()) {
			System.out.println("key/value: " + key + "/" + tm.get(key));
			dou_list.add(tm.get(key));
			str_list.add(key);

		}
		for(int i=0; i<5 ;i ++){
			resultList.add(str_list.get(i));
			double dou = dou_list.get(i); //널포인트 에러
			System.out.println(i+"더블 "+dou);
			int value = (int)dou;
			System.out.println(i+"인트 "+value);
			String str = Integer.toString(value);
			System.out.println(i+"스트링 "+str);
			resultList.add(str);
	      
	      }
double dou = dou_list.get(i); //널포인트 에러

여기서 널포인트가 납니다. 도무지 모르곘습니다. 널 포인트 날 이유가 없는 것 같은데 왜 이러는건가요>?

값은 다 들어가 있습니다. ㅜㅜ

브루스웨인 (8,580 포인트) 님이 2013년 10월 16일 질문
tm.get(key) 할때 null 와서 dou_list 에 null 이 세팅되어 있고, double dou 에 이 null 을 unboxing 하려니 NullPointerException 이 날수 있겠군요.
답변 감사합니다. tm.get(key)할 때 왜 에러가 나는거죠? key값이 없을리가 없어서요..
브루스웨인 님께서 차분하게 다시 보셔야 할부분인거 같습니다. tm 에 뭐가 들어가있는지 이 코드에는 없습니다.

Double value = tm.get(key);
if(value != null) dou_list.add(value);

이렇게 돌린후 확인해보세요.
넵 감사합니다. 좋은 하루 되세요! 아 근데 댓글이라 답변을 채택할 수가 없네요ㅠㅠ
채택하지 마시라고 댓글로 달고 있지요. 코드에 근거가 될만한 정보가 조금은 부족해서 이것만으로 해결할수 없거든요. ;;

1개의 답변

0 추천
 
채택된 답변

아래 for문 for(int i=0; i<5; i++) 에서 i는 5보다 작을때로 조건을 두셨는데,

만약 tm의 사이즈가 5보다 작을경우

dou_list.get(i)에서 가져올 값이 없으니 NullPointerException이 나올수 있을것 같군요.

smallworld (710 포인트) 님이 2013년 10월 19일 답변
브루스웨인님이 2013년 10월 21일 채택됨
...