这听起来可能有点奇怪,但有人能解释一下下面的循环是如何获得最低值的吗
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是一个小数列表,上面的循环将最低值赋给变量lowestprice,有人能解释一下上面循环的工作原理吗?谢谢。
发布于 2018-06-27 03:31:00
if(LowestPrice == null || leadingPrice.get(i) < LowestPrice){
lowestprice = leadingPrice.get(i);
}
它使用Lowestprice == null
检查是否分配了LowestPrice。如果分配了LowestPrice,则检查当前索引(leadingPrice.get(i)
)是否小于LowestPrice。如果leadingPrice.get(i)
较小,则将其分配给LowestPrice
发布于 2018-06-27 03:31:23
第一次执行循环时,LowestPrice为空(我不喜欢这种假设,但这就是代码的编写方式),因此它将LowestPrice设置为数组leadingPrice中的第一个条目。每次通过for循环时,都会将LowestPrice与leadingPrice数组中的下一个条目进行比较。如果新条目较低,则LowestPrice将更新为新条目。如果不是,它将保持当前状态。在完成整个阵列的整个过程后,您可以保证拥有最低的价格。
一种更简洁的方式是:假设第一个条目是最低的,然后遍历整个数组,寻找更低的价格。每次你找到一个,你就替换掉你目前最低的候选人。
https://stackoverflow.com/questions/51050030
复制相似问题