我想在整数数组中找到最大值和最小值,但是我无法使用它们。
Eclipse抛出此错误
Math类型的方法min(int,int)不适用于 参数(int [])
是我不能在数组中使用这些内置函数。
public static void main (String args[])
{
c_21 obj=new c_21();
int[] a =new int[3];
a[0]=1;
a[1]=5;
a[2]=6;
int max = Math.max(...a);
int min = Math.min(...a);
}
答案 0 :(得分:3)
这些函数只需要两个参数。如果需要最少的数组,可以使用IntStream。
int[] a = { 1, 5, 6 };
int max = IntStream.of(a).max().orElse(Integer.MIN_VALUE);
int min = IntStream.of(a).min().orElse(Integer.MAX_VALUE);
答案 1 :(得分:1)
如果可能,请在Apache Commons Lang中使用NumberUtils
-那里有很多很棒的实用程序。
NumberUtils.max(int[]);
在您的情况下:
int max = NumberUtils.max(a);
或者您可以使用:
int max = Collections.max(Arrays.asList(1,5,6));
答案 2 :(得分:1)
您可以简单地使用内置Java Collection
和 Arrays
来解决此问题。您只需要导入它们并使用它即可。
请检查以下代码。
import java.util.Arrays;
import java.util.Collections;
public class getMinNMax {
public static void main(String[] args) {
Integer[] num = { 2, 11, 55, 99 };
int min = Collections.min(Arrays.asList(num));
int max = Collections.max(Arrays.asList(num));
System.out.println("Minimum number of array is : " + min);
System.out.println("Maximum number of array is : " + max);
}
}
答案 3 :(得分:0)
Math.max()/min()
如果您确实要使用这两个功能,可以执行以下操作
int max = Arrays.stream(a).reduce(Math::max).orElse(Integer.MAX_VALUE);
int min = Arrays.stream(a).reduce(Math::min).orElse(Integer.MIN_VALUE);
IntStream
的内置功能
int max = IntStream.of(a).max().orElse(Integer.MIN_VALUE);
int min = IntStream.of(a).min().orElse(Integer.MAX_VALUE);
使用简单的for loop
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (int element : a) {
max = Math.max(max, element);
min = Math.min(min, element);
}