int array[] = new int[]{10, 11, 88, 2, 12, 9};
public static int getMax(int[] inputArray){
int maxValue = inputArray[0];
for(int i=1;i < inputArray.length;i++){
if(inputArray[i] > maxValue){
maxValue = inputArray[i];
}
}
return maxValue;
}
有没有办法在阵列中找到最大值但低于88?
答案 0 :(得分:5)
如果您使用Integer
,则可以使用TreeSet
Integer[] values = new Integer[]{10, 11, 88, 2, 12, 9};
NavigableSet<Integer> integers = new TreeSet<>(Arrays.asList(values));
System.out.println(integers.lower(88));
System.out.println(integers.lower(2));
System.out.println(integers.lower(100));
打印出来
12
null
88
NavigableSet.lower(E e)
的javadoc说:
返回此set中最大的元素,严格小于给定元素,如果没有这样的元素,则返回null。
答案 1 :(得分:1)
如果您使用Java8,则可以使用this question:
int[] array = new int[]{10, 11, 88, 2, 12, 9};
final int limit = 88;
Optional<Integer> max = Arrays.stream(array).filter(i -> i < limit)
.boxed().max(Comparator.naturalOrder());
System.out.println("Biggest element smaller than " + limit + " is " + max.get());
输出:
Biggest element smaller than 88 is 12
它执行以下操作:
int
数组转换为流.filter
)Integer
流(.boxed
).max
)流的关键部分是filter
,其中大于限制的元素将从流中删除。
答案 2 :(得分:0)
你可能正在寻找这样的东西:
public static int getMax(final int[] inputArray) {
final int L = 88;
int maxValue = inputArray[0];
for (int i = 1; i < inputArray.length; i++) {
if (maxValue < L)
break;
maxValue = inputArray[i];
}
for (final int element : inputArray) {
if (element >= L)
continue;
if (element > maxValue)
maxValue = element;
}
return maxValue;
}
请注意inputArray[0] >= 88