2016-08-27 5 views
-1

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

は、事前にありがとうございます。

答えて

3

まずあなたは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); 

} 
+0

、それは-1ではなく、使用している配列またはリスト内の値にMINVALUEを設定していないことが最善です。これを行わないと、-1より大きい距離の値でコードが破損します。 –

+0

私は "System.out:min = -1.0index = 0" –

1
次のコードで

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

場合は何がこれまでにtrueを返しません距離が正の場合、ステートメントは決して実行されません。

forループに入る前に、minvalを可能な限り大きい距離(たとえば、Double.MAX_VALUE)に設定する必要があります。一般的なヒントとして

関連する問題