2016-08-27 2 views
-1

Как получить минимальное значение в цикле for плюс его индекс :?Получить минимальное значение и его индекс с помощью цикла for

Update: Это то, что я пытался после использования ответ @Sakalya «s

 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

В общем наконечнике, то лучше не устанавливать MinValue до -1, а к значению в массиве или список вы используете. Без этого ваш код будет разбит на любое значение расстояния больше -1. –

+0

Я получил «System.out: min = -1.0index = 0» –

1

В следующем коде

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

никогда ничего не возвращает истину, если расстояние положительное, поэтому утверждение никогда не будет выполнено.

Вам необходимо установить minval на что-то большее, чем максимально возможное расстояние (например, Double.MAX_VALUE) перед входом в петлю.