如何在整数数组中使用Math.min和Math.max

时间:2018-07-29 07:58:53

标签: java arrays function

我想在整数数组中找到最大值和最小值,但是我无法使用它们。

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);
}

4 个答案:

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

  1. 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);
    

  1. IntStream的内置功能

    int max = IntStream.of(a).max().orElse(Integer.MIN_VALUE);
    int min = IntStream.of(a).min().orElse(Integer.MAX_VALUE);
    

  1. 使用简单的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);
    }