【发布时间】:2012-11-20 01:32:59
【问题描述】:
我正在尝试编写一个方法来比较 3 个数字并返回其中最大的一个。
这是我的代码,但它不起作用...
public int max(int x, int y, int z){
return Math.max(x,y,z);
}
如何更正我的代码?
【问题讨论】:
我正在尝试编写一个方法来比较 3 个数字并返回其中最大的一个。
这是我的代码,但它不起作用...
public int max(int x, int y, int z){
return Math.max(x,y,z);
}
如何更正我的代码?
【问题讨论】:
试试这个...
public int max(int x, int y, int z){
return Math.max(x,Math.max(y,z));
}
Math.max() 方法只接受 2 个参数,因此如果要比较 3 个数字,则需要执行此方法两次,如上代码。
【讨论】:
对于您当前的 3 个整数参数的解决方案,您可以替换:
Math.max(x,y,z)
与
Math.max(Math.max(x, y), z)
javadoc 表明 Math.max 接受 2 个参数。
【讨论】:
对于任意数量的 int 值,您可以这样做(提示 'o the hat to zapl):
public int max(int firstValue, int... otherValues) {
for (int value : otherValues) {
if (firstValue < value ) {
firstValue = value;
}
}
return firstValue;
}
【讨论】:
public int max(int[] values),并且您需要因此传入一个数组
public int max(int value0, int... values) 将使IllegalArgumentException 超级流畅,并且可以直接使用value0 初始化maxValue。这么多更快/更小的代码:)
如果 Apache Commons Lang 在您的类路径中,您可以使用 NumberUtils。
有几个max、min 函数。也是你想要的。
检查 API:http://commons.apache.org/lang/api/org/apache/commons/lang3/math/NumberUtils.html
Commons Lang 很有用,因为它扩展了标准 Java API。
【讨论】:
尝试使用 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);
}
【讨论】: