在没有任何方法的情况下挑选列表中最小和最大的数字

时间:2014-11-12 15:53:17

标签: java algorithm

我试图从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作为最小的那个,那就好了,但我不能。请帮帮我,如何从列表中选择下一个不是零的最小数字。 感谢。

2 个答案:

答案 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;