Java:这种在整数数组中找到最大值的方法是否正确?

时间:2016-06-25 19:40:33

标签: java arrays

我正在尝试在整数数组中找到最高值。我不想在任何地方使用双打。

public static int findMax(int...vals) {
    int max = Integer.MIN_VALUE;
    for (int d: vals) {
        if (d > max) max = d;
    }
    return max;
}

3 个答案:

答案 0 :(得分:0)

如何使用Integer包装器而不是原语...

最好的部分是你可以使用集合并有效地获得最大值

public static int findMax(Integer[] vals) {

   return Collections.max(Arrays.asList(vals));
}

 public static int findMax(int[] vals) {
    List<Integer> l = new ArrayList<>();    
    for (int d: vals) {
        l.add(d);
    }

    return Collections.max(l);
 }

答案 1 :(得分:0)

我建议用第一个值初始化max,如果没有传递值则抛出异常。

public static int findMax(int...vals) {
    int max;
    // initialize max
    if (vals.length > 0) {
        max = vals[0];
    }
    else throw new RuntimeException("findMax requires at least one value");
    for (int d: vals) {
        if (d > max) max = d;
    }
    return max;
}

或者只是

public static int findMax(int...vals) {
    int max = vals[0];
    for (int d: vals) {
        if (d > max) max = d;
    }
    return max;
}

答案 2 :(得分:0)

另一个想法是使用递归:

private int getMaxInt(int... ints) {
        if (ints.length == 1) return ints[0];
        else return Math.max(ints[0], getMaxInt(Arrays.copyOfRange(ints, 1, ints.length)));
    }