试图在数组中找到最小的值,因为数组几乎总是有空值,我已经得到了这么远,但仍坚持如何阻止它找到0'小号
float smallest = Integer.MAX_VALUE;
for(int x=0; x<priceArr.length;x++) {
if(smallest > priceArr[x]) {
smallest = priceArr[x];
}
}
答案 0 :(得分:0)
一般情况下,要将==
与float
进行比较,您可以使用epsilon值来考虑其表示中的误差范围。
但这种解决方案也不完美
您可以参考#line
。
默认0.0F
值为if
。
因此,您可以在float epsilon = 0.00000001F;
float currentValue = priceArr[x];
if (Math.abs(currentValue) < epsilon && smallest > currentValue ) {
smallest = currentValue;
}
语句中使用此条件:
priceArr[x]
请注意,使用局部变量存储float
值可减少重复。
但请注意,使用epsilon比较0
可能会给出匹配,而值实际上不是float[] array = new float[5];
array[0] = 0.000000001F;
float epsilon = 0.00000001F;
if (Math.abs(array[0]) < epsilon) {
System.out.println("match");
}
值。
例如:
Float
将生成&#34;匹配&#34;。
如果您的要求仅忽略未明确估价的数组元素,则应优先于float
而不是Float
。
默认情况下,null
是数组中的Float currentValue = priceArr[x];
if(currentValue != null && smallest > currentValue ) {
smallest = currentValue;
}
,您可以测试无效以忽略该元素:
{{1}}
答案 1 :(得分:0)
尝试在数组中找到最小值,而不是<0;
该过程与从数组中查找最小值的过程相同。最重要的是,添加一个条件来检查当前搜索是否为零。
float smallest = Integer.MAX_VALUE;
for(int x=0; x<priceArr.length; x++) {
if(smallest < priceArr[x] && priceArr[x] != 0) { //additional condition here
smallest = priceArr[x];
}
}
注意:从smallest > priceArr[x]
更改为smallest < priceArr[x]
。
如果您的数组大小至少为1,您还可以将smallest
设置为第一个数组元素。