如前所述,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;
}
}
这将采用任意数量的混合数字参数(Integer、Double和Float),但返回值是Object,因此必须将其强制转换为Integer、Double或Float。
它也可能抛出一个错误,因为没有“MY_DOUBLE2”这样的东西。