数组中最小的数字不是0

时间:2017-10-29 15:49:47

标签: java arrays

试图在数组中找到最小的值,因为数组几乎总是有空值,我已经得到了这么远,但仍坚持如何阻止它找到0'小号

 float smallest = Integer.MAX_VALUE; 
for(int x=0; x<priceArr.length;x++) {
    if(smallest > priceArr[x]) {
    smallest = priceArr[x];
    }
}

2 个答案:

答案 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设置为第一个数组元素。