在最小和最大方法中使用多个参数

时间:2019-02-12 00:45:18

标签: java

我正在尝试将多个数字放入最小和最大方法中。我知道在最小和最大方法中仅允许使用两种方法。但是,我有两个以上的数字,我不知道自己在做什么。

此代码也在reply.it上:

int age5 = 75;
int age6 = 62;
int age7 = 89; 
int age8 = 90;
int age9 = 101;
int youngestAge = Math.min()
int oldestAge = Math.max()

3 个答案:

答案 0 :(得分:2)

您可以使用循环

    int[] age = {75, 62, 89, 90, 101};
    int youngestAge = age[0];
    int oldestAge = age[0];
    for(int i = 1; i < age.length; i++) {
      youngestAge = Math.min(youngestAge, age[i]);
      oldestAge = Math.max(oldestAge, age[i]);
    }
    System.out.println(youngestAge+ " " + oldestAge);

答案 1 :(得分:0)

Varargs是一项允许方法接收N个参数的功能。因此,您可以使用它编写一种方法,该方法可以接收不确定数量的年龄并返回较小的年龄:

public int smallerNumber(int... numbers) {
    int smallerNumber = 0;
    int previousVerified = numbers[0];
    for(int i = 1; i < numbers.length; i++) {
        smallerNumber = Math.min(numbers[i], numbers[i-1]);
        if(previousVerified <= smallerNumber)
            smallerNumber = previousVerified;
        else
            previousVerified = smallerNumber;
    }
    return smallerNumber;
}

致电:

smallerNumber(65, 654, 7, 3, 77, 2, 34, 6, 8);

返回以下内容:2

答案 2 :(得分:0)

使用JDK 8+,您可以使用流

public static void main(String [] args) {
    int min = IntStream.of(75, 62, 89, 90, 101).min().getAsInt();
    int max = IntStream.of(75, 62, 89, 90, 101).max().getAsInt();
}

另一个带有摘要统计信息的示例

public static void main(String [] args) {
    final IntSummaryStatistics s = IntStream.of(75, 62, 89, 90, 101).summaryStatistics();

    System.out.println(s.getMin());
    System.out.println(s.getMax());
}