就像前面提到的,Math.max()只需要两个参数。它与您当前的语法不完全兼容,但您可以尝试Collections.max()。
如果你不喜欢,你总是可以创建自己的方法吧......
public class test {
final static int MY_INT1 = 25;
final static int MY_INT2 = -10;
final static double MY_DOUBLE1 = 15.5;
public static void main(String args[]) {
double maxOfNums = multiMax(MY_INT1, MY_INT2, MY_DOUBLE1);
}
public static Object multiMax(Object... values) {
Object returnValue = null;
for (Object value : values)
returnValue = (returnValue != null) ? ((((value instanceof Integer) ? (Integer) value
: (value instanceof Double) ? (Double) value
: (Float) value) > ((returnValue instanceof Integer) ? (Integer) returnValue
: (returnValue instanceof Double) ? (Double) returnValue
: (Float) returnValue)) ? value : returnValue)
: value;
return returnValue;
}
}
这将需要任意数量的混合数值参数(整数,double和float),但返回的值是一个对象,所以你必须把它转换为整型,双精度或浮点型。
由于没有“MY_DOUBLE2”之类的东西,它可能也会引发错误。
+1我正要提交了相同的答案。 – 2011-02-13 03:20:31
当涉及n个值时,必须有更好的方法。 – mlissner 2013-04-16 23:27:36
@mlissner是的,使用一个循环和一个变量`max`,检查每个变量是否大于`max`,如果是的话:将`max`设置为该变量。假设你的n值当然是在一个数组中。 – 2013-09-20 17:12:11