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 は初期化されています。なぜこれが原因でクラッシュするのか、考えがつきませんでした。また、可能であれば、2点間の距離を計算する他の方法を提案してください(distanceBetweenについてはすでに知っています)

4

1 に答える 1

0

変数を初期化する必要がありcalclocます (これまでのところ明らかにそうではありません)。

于 2013-02-11T08:39:07.590 に答える