如何对浮点数数组求和

时间:2018-07-26 06:22:22

标签: android google-maps android-location

如何对浮点数数组求和。.由于数组浮点数的距离结果来自Google maps api中的结果Location.distanceBetween(latStart, longStart, latB, longB, results);方法,我正在尝试使用此方法,但有时减少,则应始终增加。我想念什么?

编辑

public float total(ArrayList<LatLng> listPoints){
        if(listPoints.size()==2){
            listPoints.clear();
        }
        listPoints.add(latLng);
        float[] results = new float[2];
        float sum  = 0.0f;
        for (int z = 0; z < listPoints.size(); z++) {
            if(listPoints.size() == 1){
                latStart = listPoints.get(z).latitude;
                longStart = listPoints.get(z).longitude;
                Toast.makeText(this, "listPoint 1", Toast.LENGTH_SHORT).show();
            }else if(listPoints.size() == 2){
                latB = listPoints.get(z).latitude;
                longB = listPoints.get(z).longitude;
                Toast.makeText(this, "listPoint 2", Toast.LENGTH_SHORT).show();
            }
            Location.distanceBetween(latStart, longStart, latB, longB, results);
            sum+=results[0];
        }
        tvJarakTotal.setText(sum + "");
        return sum;
    }

编辑: 距离来自onLocationChanged()方法,因为用户位置在移动,

编辑: 我最终通过使用sharedPreference创建一些技巧来自己找到解决方案。但是接受的答案对这个问题是正确的。

3 个答案:

答案 0 :(得分:1)

目前尚不清楚您在上面的代码中在做什么。首先,Location#distanceBetween API接收纬度经度值的一个,即两个地理点,然后以results[0]返回它们之间的距离({ 3}})。

接下来,不清楚起点和终点是什么。我在假设listPoints是一组点(起点或终点),而价位latBlongB是一组固定的起点/终点的情况下回答了这一问题。没有这个假设,这里的答案真的无法给出。

public float total(ArrayList<LatLng> listPoints) {
    float[] results;
    float sum = 0.0f;
    for (int z=0; z < listPoints.size(); z++) {
        double latStart = listPoints.get(z).latitude;
        double longStart = listPoints.get(z).longitude;
        Location.distanceBetween(latStart, longStart, latB, longB, results);
        sum += results[0];
        tvJarak.setText(sum + "");
    }

    return sum;
}

答案 1 :(得分:0)

请仔细查看您的代码。

"Impact"

float[] results = new float[listPoints.size()]; 变量被声明为局部变量,但尚未使用任何值初始化。 在这种情况下,它具有随机值。

这就是results给出随机负值的原因。

答案 2 :(得分:0)

float[] results = new float[listPoints.size()];

在这种情况下,结果数组存储listPoints数组的大小。之后,您尝试使用listPointers数组大小来迭代结果数组。

假设您的:-float [] results = new [2];

现在,您尝试一次又一次地将相同的值累加起来以进行循环。请确保您的方案正确与否。

您应该在代码中存储api date someware。像这样:

lat = listPoints.get(z).latitude;
long = listPoints.get(z).longitude;

如果您愿意,可以这样做

public float total(ArrayList<LatLng> listPoints) {
    float[] results;
    float sum = 0.0f;
    float lat = 0.0f, long = 0.0f;
    for (int z=0; z < listPoints.size(); z++) {
        lat = listPoints.get(z).latitude;
        long = listPoints.get(z).longitude;
        Location.distanceBetween(lat, long, latB, longB, results);
        sum+=results[z];
        tvJarak.setText(sum + "");
    }

    return sum;
}