最大值除一个数字

时间:2016-11-28 10:29:37

标签: java

我想找出一个数字的最大值,它保存0到6之间的数字。但是应该排除数字6。在我的逻辑中,5是最高的数字,所以我必须理清6。

for (int i = 0; i < requirements.length; i++) {
    for (int k = i + 1; k < requirements.length; k++) {
        if(requirements[i] < requirements[k])
                && requirements[k] != 6) {
            highest = requirements[k];
        } else {
            if(requirements[i] != 6) {
                highestAsilLevel = requirements[i]; 
            }
        }
    }
}

我做到了这一点,但这对任何情况都不起作用。

5 个答案:

答案 0 :(得分:3)

为什么要两个循环?只有一个就足够了:

Integer max = null;
for (int i = 0; i < requirements.length; i++) {
     Integer currentValue = requirements[i];
     if (currentValue!=6 && (max==null || currentValue>max)){
           max = currentValue;
     }
 }
 return max;

答案 1 :(得分:2)

1。)对数组进行排序

2。)从最后开始循环

3。)比较数字,如果它不是6那么你得到你的数字

int num=-1;
Arrays.sort(array);
for(int i=array.length-1;i>=0;i--){
    if(array[i]!=6){
       num = array[i];
       break;
    }
}

if(num!=-1){
    // you found your value
}else{
 //  all 6 , no expected value found  
}

注意:对于未来的读者Array.sort保证n * log(n)时间复杂度,这是非常有效的,特别是当数组大小不是很大Read thisthis beautiful article时,进一步的细节。

答案 2 :(得分:0)

我认为你想要数组中第二高的数字..你可以做以下

public class TwoMaxNumbers {
public static void main(String a[]){
    int requirements[] = {5,34,78,2,45,1,99,23};
    int maxOne = 0;
    int maxTwo = 0;
    for(int n:requirements){
        if(maxOne < n){
            maxTwo = maxOne;
            maxOne =n;
        } else if(maxTwo < n){
            maxTwo = n;
        }
    }
    System.out.println("Second Max Number: "+maxTwo);
}
}

如果您只想避免使用数字6,则可以执行此操作

int max = null;
for (int i = 0; i < requirements.length; i++) {
 int max1 = requirements[i];
 if ((max1!=6) && (max==null || max1>max)){
       max = max1;
   }
}
return max;

答案 3 :(得分:0)

这是你的答案:

public class Test {
    public static void main(String[] args) {

        int num[] = { 6, 1, 2, 3, 4, 5 };
        int max = 0;
        for (int i = 0; i < num.length; i++) {
            if (max < num[i] && num[i] != 6) {
                max = num[i];
            }
        }
        System.out.println(max);

    }

}

答案 4 :(得分:0)

    int requirements[] = { 6, 1, 2, 3, 4, 5 };
    int max = Arrays.stream(requirements).filter(i -> i!=6).max().getAsInt();
    System.out.println(max);