gpt4 book ai didi

Java从for循环中寻找最小值

转载 作者:行者123 更新时间:2023-12-01 18:18:33 37 4
gpt4 key购买 nike

我在尝试找到最小距离时遇到了一些问题,然后从最小距离开始,我在 map 上绘制了两个圆圈。

                    double distance = 0;
double minDistance;
convertedHotSpotGeomList = RetrieveHotSpotAsyncTask.convertedHotSpotGeom;
for(int i = 0; i < convertedHotSpotGeomList.size(); i++){
LatLng point1 = new LatLng(convertedHotSpotGeomList.get(i).getY(), convertedHotSpotGeomList.get(i).getX());
LatLng point2 = new LatLng(convertedHotSpotGeomList.get(++i).getY(), convertedHotSpotGeomList.get(++i).getX());
distance = calculateHotSpot(point1, point2);
Log.i("DIST", String.valueOf(distance));
minDistance = distance;
if(minDistance < distance){
minDistance = distance;
Log.i("MIN", String.valueOf(minDistance));
CircleOptions circleOptions = new CircleOptions()
.center(point1)
.radius(1000)
.fillColor(Color.argb(95, 178, 30, 37))
.strokeColor(Color.TRANSPARENT);

googleBasemap.addCircle(circleOptions);

CircleOptions circleOptions1= new CircleOptions()
.center(point2)
.radius(1000)
.fillColor(Color.argb(95, 88, 130, 37))
.strokeColor(Color.TRANSPARENT);

googleBasemap.addCircle(circleOptions1);

}
}

目前我得到的 DIST 为 15, 3, 15, 14,但我无法获取 minDist,因为它没有打印出来。有什么想法吗?

提前致谢。

最佳答案

您可能想要:

    distance = calculateHotSpot(point1, point2);
....
if(distance < minDistance){
minDistance = distance;

并初始化minDistanceDouble.MAX_VALUE :double minDistance = Double.MAX_VALUE

原来的几行没有多大意义,因为minDistance < distance因为您刚刚设置 minDistance = distance; ,所以永远不会评估为 true

    distance = calculateHotSpot(point1, point2);
....
minDistance = distance;
if(minDistance < distance){ // will never happen
minDistance = distance;

更新:

更完整的解决方案,因为上述问题并不是唯一的问题:

double minDistance = Double.MAX_VALUE;
convertedHotSpotGeomList = RetrieveHotSpotAsyncTask.convertedHotSpotGeom;
LatLng[] minPoints = new LatLng[2]; // save the minimum points
for(int i = 0; i < convertedHotSpotGeomList.size(); i++){
LatLng point1 = new LatLng(convertedHotSpotGeomList.get(i).getY(), convertedHotSpotGeomList.get(i).getX());
LatLng point2 = new LatLng(convertedHotSpotGeomList.get(++i).getY(), convertedHotSpotGeomList.get(++i).getX());
distance = calculateHotSpot(point1, point2);
Log.i("DIST", String.valueOf(distance));
if(distance < minDistance){
minDistance = distance;
Log.i("MIN", String.valueOf(minDistance));
minPoints[0] = point1;
minPoints[1] = point2;
}
}
// we finish all the comparison, so we draw the circles now
if(minPoints[0]!=null && minPoints[1] !=null){
CircleOptions circleOptions = new CircleOptions()
.center(minPoints[0])
.radius(1000)
.fillColor(Color.argb(95, 178, 30, 37))
.strokeColor(Color.TRANSPARENT);
CircleOptions circleOptions1= new CircleOptions()
.center(minPoints[1])
.radius(1000)
.fillColor(Color.argb(95, 88, 130, 37))
.strokeColor(Color.TRANSPARENT);

googleBasemap.addCircle(circleOptions);
googleBasemap.addCircle(circleOptions1);
}

关于Java从for循环中寻找最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28281471/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com