如何在函数内部定位 Java 中 Varargs 方法的元素?

How to target the elements of the Varargs method in Java inside the function?

我想用varags方法获取各种整数的输入,并找出其中的最大值和最小值。

public class MINMAX {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        int c = in.nextInt();
        Maximum(a,b,c);
        Minimum(a,b,c);
    }
    static void Maximum(int ...v) {
        int max = Math.max(a,Math.max(b,c));
        System.out.println("The Largest no. is: "+max);
    }
    static void Minimum(int ...v) {
        int min = Math.min(a,Math.min(b,c));
        System.out.println("The Smallest no. is: "+min);
    }
}

在这里,我从用户那里获取 a、b、c 的输入以找出最大值和最小值。但想知道如何在 Varargs 方法中定位特定元素。

可变参数语法 (... parameterName) 只是参数是数组的另一种说法,不是吗? java.util.Collections class 中包含您可能会觉得有用的方法。我怀疑您可能需要将数组转换为实现 Collection 接口的东西才能使用它们(例如 java.util.ArrayList)。

您可以将其作为您在方法参数中提供的 int 基本类型数组进行访问。 例如

 static void Maximum(int ...v) {
      int max = Math.max(v[0],Math.max(v[1],v[2]));
      System.out.println("The Largest no. is: "+max);
 }

 static void Minimum(int ...v) {
     int min = Math.min(v[0],Math.min(v[1],v[2]));
     System.out.println("The Smallest no. is: "+min);
 }

我建议您在开始该过程之前养成检查目录和其他控件大小的习惯。

首先,想象一下如果您有 10 个输入而不是 3 个,您需要多少 Math.min

您需要的是一种可以接受不同数量输入的方法(这就是我们使用可变参数的原因),这样当您想支持更多输入时无需更改任何内容。因此,您需要处理可变参数(可以将其视为数组)而不是特定元素。

此外,通过使用IntStream#summaryStatistics,您可以一次获得最小值和最大值。

    static void maximumAndMaximum(int... v) {
        IntSummaryStatistics statistics = IntStream.of(v).summaryStatistics();
        System.out.println("The Smallest no. is: " + statistics.getMin());
        System.out.println("The Largest no. is: " + statistics.getMax());
    }