我试图从5个数字的列表中选择,最大和最小的数字。 最大的我没有问题,或者在某些情况下最小。 但是,对于最小的数字,我想添加一个条件,如果它的零(' 0'),我不会选择它,这意味着从5个数字我想选择最小的一个,那不是0。 例如: 1000 2000 3000 0 0 我想选1000。
另外,我不能使用任何方法或基于函数的Just If语句。
那是我的代码:
if((manufactorsPrice1<manufactorsPrice2)&&(manufactorsPrice1<manufactorsPrice3)&&(manufactorsPrice1<manufactorsPrice4)&&(manufactorsPrice1<manufactorsPrice5)){
if(manufactorsPrice1>0){
smallestPrice=manufactorsPrice1;
}
}else if((manufactorsPrice2<manufactorsPrice3)&&(manufactorsPrice2<manufactorsPrice4)&&(manufactorsPrice2<manufactorsPrice5)){
if(manufactorsPrice2>0){
smallestPrice=manufactorsPrice2;
}
}else if((manufactorsPrice3<manufactorsPrice4)&&(manufactorsPrice3<manufactorsPrice5)){
if(manufactorsPrice3>0){
smallestPrice=manufactorsPrice3;
}
}else if(manufactorsPrice4 < manufactorsPrice5){
if(manufactorsPrice4>0){
smallestPrice=manufactorsPrice4;
}
}else{
if(manufactorsPrice5>0){
smallestPrice=manufactorsPrice5;
}}
如果我可以选择0作为最小的那个,那就好了,但我不能。请帮帮我,如何从列表中选择下一个不是零的最小数字。 感谢。
答案 0 :(得分:2)
这是一个只使用额外局部变量来减少嵌套的解决方案。它将找到最小非零值(如果存在)或零,如果它们都是0.它也使用较少的比较。
...
int min1, min2;
if (a2 == 0 || (a1 < a2 && a1 != 0))
min1 = a1;
else
min1 = a2;
if (a4 == 0 || (a3 < a4 && a3 != 0))
min2 = a3;
else
min2 = a4;
if (min1 == 0 || (min2 < min1 && min2 != 0))
min1 = min2;
if (min1 == 0 || (a5 < min1 && a5 != 0))
min1 = a5;
return min1;
答案 1 :(得分:0)
适合只允许使用条件的教师的解决方案......
s=
(s=
(s=
(s=
x2!=0&&x2
<x1?x2:x1)>x3
&&x3!=0?x3:s)>x4
&&x4!=0?x4:s)>x5
&&x5!=0?x5:s;