就像前面提到的,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