Работа цикла for для получения минимального значения - PullRequest
0 голосов
/ 26 июня 2018

Это может звучать немного странно, но кто-то может объяснить, как приведенный ниже цикл может получить наименьшее значение

Decimal LowestPrice;
 //for loop to find the smallest value
    for(Integer i = 0;i<leadingPrice.size();i++){
        //no idea how the below line is getting the lowest value 
        if(LowestPrice == null || leadingPrice.get(i) < LowestPrice){
            lowestprice = leadingPrice.get(i);

        }

LeadingPrice является списком десятичных дробей, и цикл выше назначает наименьшее значение переменной наименьшей цены, может кто-нибудь объяснить, как работает цикл выше Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

При первом прохождении цикла LowestPrice имеет значение null (мне не нравится это предположение, но именно так и написан код), поэтому для LowestPrice устанавливается первая запись в массиве leadPrice. Каждый последующий раз в цикле for LowestPrice сравнивается со следующей записью в массиве leadPrice. Если новая запись ниже, то LowestPrice обновляется до новой. Если нет, он остается текущим. После полной поездки по всему массиву вы гарантированно получите самую низкую цену.

Более краткий способ сформулировать это: вы предполагаете, что первая запись самая низкая, а затем читаете весь массив в поисках более низких цен. Каждый раз, когда вы его находите, вы заменяете своего текущего низшего кандидата.

0 голосов
/ 26 июня 2018
if(LowestPrice == null || leadingPrice.get(i) < LowestPrice){
        lowestprice = leadingPrice.get(i);

   }

Он проверяет, назначен ли LowestPrice или нет, используя Lowestprice == null. Если назначен LowestPrice, тогда проверяется, меньше ли текущий индекс (leadingPrice.get(i)), чем LowestPrice. Если leadingPrice.get(i) меньше, то назначается LowestPrice

...