2013-02-11 3 views
0
String calculateDistanceMetric(double loclat, double loclong) 
    {  
     Log.i("Metric", String.valueOf(loclat)); 
     Log.i("Metric", String.valueOf(loclong)); 
     Location destloc = new Location(provider); 
     destloc.setLatitude(loclat); 
     destloc.setLongitude(loclong); 
     Log.i("Metric", "1"); 
     if (calcloc.distanceTo(destloc) > 100) ////////here is where the code breaks 
     { 
      Log.i("Metric", "2"); 
      float round = calcloc.distanceTo(destloc); 
      Log.i("Metric", "3"); 
      DecimalFormat df = new DecimalFormat("##.#"); 
      Log.i("Metric", "4"); 
      distanceUnit = "KM"; 
      Log.i("Metric", "5"); 
      return String.valueOf(round/1000); 
     } 
     else 
     { 
      Log.i("Metric", "6"); 
      distanceUnit = "Meters"; 
      Log.i("Metric", "7"); 
      return String.valueOf(calcloc.distanceTo(destloc)); 
      } 

    } 

nullpointerexception을받는 이유는 무엇입니까? loclat 및 loclong의 값이 유효하고 destloc이 초기화되었는데 이것이 왜 충돌을 일으키는 지에 대한 아이디어가 없어졌습니다. 두 점 사이의 거리를 계산하는 다른 방법을 제안 할 수도 있습니다. (이미 거리 사이를 알고 있습니다.)calcloc.distanceTo() null 포인터 예외 발생

+1

어디에서 'calcloc'을 정의하고 선언 했습니까? – user370305

+0

LogCat 출력에서 ​​예외 StarckTrace를 게시하여 오류가 정확히 어디인지 확인하십시오. – iTech

+0

내가 그것을 선언했다는 것을 확신한다. –

답변

0

calcloc 변수를 초기화해야합니다 (지금까지는 분명하지 않음).

+0

에 대한 답변에 감사드립니다. 코드 시작 부분에 선언했습니다. –

+0

distanceBetween, 대답을 주셔서 감사합니다 –

+0

당신은 확실히 그것을 선언했다 (그렇지 않으면 컴파일 오류가 발생합니다). 그러나 당신은 분명히 가치를 부여하지 않았습니다. – fiddler