代码之家  ›  专栏  ›  技术社区  ›  stuck

如何求浮点数数组的和

  •  0
  • stuck  · 技术社区  · 8 年前

    如何对浮点数数组求和..作为数组浮点数来自结果的距离的结果 Location.distanceBetween(latStart, longStart, latB, longB, results); 方法在google maps api中,我正在尝试这个方法,但是在某个时候它会减少,它应该总是增加。我错过了什么?

    编辑 :

    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() 方法当用户位置移动时,

    编辑 : 我最终通过使用共享引用创建一些技巧找到了解决方案。但公认的答案是正确的。

    3 回复  |  直到 8 年前
        1
  •  1
  •   Tim Biegeleisen    8 年前

    不完全清楚您认为您在上面的代码中做了什么。首先, location DistanceBetween api接受纬度经度值(即两个地理点)的A Pair Em>然后返回它们之间的距离in results[0] (q.v.the documentation ).

    接下来,还不清楚起点和终点是什么。我在下面的回答中假设 listpoints 是一组点(起点或终点),而vales latb longb 是一组固定的起点/终点。如果没有这个假设,这里就无法给出答案。

    public float total(arraylist<latlng>listpoints){
    浮动[]结果;
    浮点和=0.0f;
    对于(int z=0;z<listpoints.size();z++){
    double latstart=listpoints.get(z).latitude;
    double longstart=listpoints.get(z).longitude;
    位置。距离(latstart、longstart、latb、longb、results);
    sum+=结果[0];
    tvjarak.settext(sum+“”);
    }
    
    返回总和;
    }
    < /代码> 
    ,即两个地理点,然后返回它们之间的距离results[0](q.v)文档)。

    接下来,还不清楚起点和终点是什么。我在下面的回答中假设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;
    }
    
        2
  •  0
  •   Lee Ming    8 年前

    请仔细查看您的代码。

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

    results 变量声明为局部变量,但尚未用任何值初始化。 在这种情况下,它具有随机值。

    这就是为什么 sum 给出随机负值。

        3
  •  0
  •   Pasindu Weerakoon    8 年前
    float[] results = new float[listPoints.size()];
    

    在这种情况下,结果数组存储了listpoints数组的大小。之后,您将尝试使用ListPointers数组大小迭代结果数组。

    假设你: float [] results = new [2];

    现在,您尝试在一个循环中一次又一次地在内部添加相同的值。请确保您的方案正确与否。

    您应该将API日期存储在代码中。这样地:

    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;
    }