我正在尝试在整数数组中找到最高值。我不想在任何地方使用双打。
public static int findMax(int...vals) {
int max = Integer.MIN_VALUE;
for (int d: vals) {
if (d > max) max = d;
}
return max;
}
答案 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)));
}