有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用for循环获取最小值及其索引

如何获得for循环中的最小值及其索引:

更新:这是我在使用@Sakalya的答案后尝试的

      LatLng myLatLang = new LatLng(myLocation.getLatitude(),myLocation.getLongitude());

        double minval = -1.0;
        int minIndex = 0;

        for (int i = 0; i < stationsCoord.size(); i++) {

            double distance = CalculationByDistance(myLatLang,stationsCoord.get(i));

            if(distance < minval){
                minval = distance;
                minIndex = i;
            }

            Log.i("distance " , String.valueOf(distance));

            System.out.println("min=" +minval+ "index="+minIndex);

        }

      //i'm looking for the min value of 'distance' + the index 'i'

我总是这样:System.out: min=-1.0index=0

先谢谢你


共 (2) 个答案

  1. # 1 楼答案

    在下面的代码中

    double minval = -1.0;
    if (somepositivedistance < minval ) { // do something
    }
    

    如果距离为正,则不会返回true,因此该语句将永远不会执行

    在进入for循环之前,需要将minval设置为大于最大可能距离的值(例如Double.MAX_VALUE

  2. # 2 楼答案

    首先,您可以将最小变量设置为1000000,然后迭代列表以查找最小值,如下所示:

    LatLng myLatLang = new LatLng(myLocation.getLatitude(), myLocation.getLongitude());
    
    double minval = 1000000000000.0;
    int minIndex = 0;
    
    for (int i = 0; i < stationsCoord.size(); i++) {
    
        double distance = CalculationByDistance(myLatLang,stationsCoord.get(i));
    
        if (distance < minval) {
          minval = distance;
          minIndex = i;
        }
    
        Log.i("distance " , String.valueOf(distance));
    
        System.out.println("min=" +minval+ "index="+minIndex);
    
    }