簡體   English   中英

如何在函數內部定位 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 方法中的特定元素。

首先,想象一下如果您有 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());
    }

可變參數語法 ( ... parameterName ) 只是另一種說法,參數是一個數組,不是嗎? java.util.Collections類具有您可能會發現有用的方法。 我懷疑您可能需要將數組轉換為實現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);
 }

我建議您養成在開始該過程之前檢查目錄大小和其他控件的習慣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM