3

我正在尝试编写一个方法来比较 3 个数字并返回其中最大的一个。

这是我的代码,但它不起作用......

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

如何更正我的代码?

4

5 回答 5

5

尝试这个...

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

该方法Math.max()仅接受 2 个参数,因此如果要比较 3 个数字,则需要执行此方法两次,如上面的代码所示。

于 2012-11-20T01:36:07.790 回答
4

对于您当前的 3 个整数参数的解决方案,您可以替换:

Math.max(x,y,z)

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

javadoc显示需要Math.max2 个参数。

于 2012-11-20T01:35:13.550 回答
4

对于任意数量的 int 值,您可以这样做(tip 'o the hat to zapl):

public int max(int firstValue, int... otherValues) {
    for (int value : otherValues) {
        if (firstValue < value ) {
            firstValue = value;
        }
    }
    return firstValue;
}
于 2012-11-20T01:36:20.310 回答
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);
}
于 2012-11-20T02:44:42.117 回答
0

如果 Apache Commons Lang 在您的类路径中,您可以使用NumberUtils.

有几个max,min功能。也是你想要的。

检查 API:http ://commons.apache.org/lang/api/org/apache/commons/lang3/math/NumberUtils.html

Commons Lang 很有用,因为它扩展了标准的 Java API。

于 2012-11-20T02:16:52.483 回答