【问题标题】:How to use Math.min and Math.max in integer array如何在整数数组中使用 Math.min 和 Math.max
【发布时间】:2018-07-29 07:58:52
【问题描述】:

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

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

【问题讨论】:

  • 我的猜测是您的老师希望您使用循环编写算法来做到这一点。不只是为您找到一种方法。正如消息中清楚地说明的那样,您找到的方法以及 javadoc 也说,只需比较两个整数。如果您的目标是在 Java 库中查找方法,那么您需要阅读他们的 javadoc。
  • 您现在可以考虑accepting an answer 或发表评论以获取详细信息;)以奖励那些为您花费时间的人;)

标签: java arrays function


【解决方案1】:

这些函数只需要两个参数。如果你想要一个数组的最小值,你可以使用 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);

【讨论】:

    【解决方案2】:

    您可以简单地使用 in-build 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】:
      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);
        }
        

      【讨论】:

        【解决方案4】:

        如果可能,请在 Apache Commons Lang 中使用 NumberUtils - 那里有很多很棒的实用程序。

        NumberUtils.max(int[]);
        

        在你的情况下:

        int max = NumberUtils.max(a);
        

        或者你可以使用:

        int max = Collections.max(Arrays.asList(1,5,6));
        

        【讨论】:

          猜你喜欢
          • 2022-01-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-20
          • 2013-11-10
          • 2010-12-31
          • 2015-06-27
          • 2023-04-08
          相关资源
          最近更新 更多