2012-11-20 50 views

回答

4

您當前的3個整數參數的解決方案,你可以更換:

Math.max(x,y,z) 

Math.max(Math.max(x, y), z) 

javadoc表明Math.max需要兩個參數。

+0

對於3個實例的給定的問題,這是做到這一點的最簡單的方法。我也喜歡一般的解決方案,但對於這個特定的問題,我認爲這是最好的答案。 – tilois

5

嘗試......

public int max(int x, int y, int z){ 
    return Math.max(x,Math.max(y,z)); 
} 

的方法Math.max()只接受2個參數,所以你需要的,如果你要比較3個數字,按上面的代碼進行兩次這種方法。

4

對於任何數量的整型值,你可以這樣做(尖「O的帽子zapl):

public int max(int firstValue, int... otherValues) { 
    for (int value : otherValues) { 
     if (firstValue < value) { 
      firstValue = value; 
     } 
    } 
    return firstValue; 
} 
+1

除上述之外,如果您使用的是不支持可變長度符(Java 1.4或更早版本)的較舊JVM版本,則方法簽名應爲'public int max(int [] values)',並且您需要從而傳入數組 – wattostudios

+0

@WATTOStudios - 是的,varargs是在Java 5中引入的,因此它已經存在很長時間了。還有一些Java環境(如BlackBerry)是Java 1.4。 –

+0

是啊,只是想提到它,你永遠不能告訴用戶實際上運行。儘管愛你的答案。 – wattostudios

0

嘗試使用JDK的API:

public static int max(int i, int... ints) { 
    int nums = new int[ints.length + 1]; 
    nums[0] = i; 
    System.arrayCopy(ints, 0, nums, 1, ints.length); 
    Arrays.sort(nums); 
    return ints[nums.length - 1); 
} 
相關問題