在 Java 中查找不同数据类型的 3 个数字中的最大值
假设我有以下三个常量:
final static int MY_INT1 = 25;
final static int MY_INT2 = -10;
final static double MY_DOUBLE1 = 15.5;
我想获取其中的三个并使用 Math.max() 来查找这三个常量的最大值,但是如果我传入两个以上的值,那么它会给我一个错误。例如:
// this gives me an error
double maxOfNums = Math.max(MY_INT1, MY_INT2, MY_DOUBLE2);
请让我知道我做错了什么。
Say I have the following three constants:
final static int MY_INT1 = 25;
final static int MY_INT2 = -10;
final static double MY_DOUBLE1 = 15.5;
I want to take the three of them and use Math.max()
to find the max of the three but if I pass in more then two values then it gives me an error. For instance:
// this gives me an error
double maxOfNums = Math.max(MY_INT1, MY_INT2, MY_DOUBLE2);
Please let me know what I'm doing wrong.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
Math.max 仅接受两个参数。如果您想要最多三个,请使用
Math.max(MY_INT1, Math.max(MY_INT2, MY_DOUBLE2))
。Math.max
only takes two arguments. If you want the maximum of three, useMath.max(MY_INT1, Math.max(MY_INT2, MY_DOUBLE2))
.你可以使用这个:
或创建一个函数
you can use this:
or create a function
如果可能,请使用 Apache Commons Lang 中的 NumberUtils - 那里有很多很棒的实用程序。
https://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/math/NumberUtils.html#max(int[])
If possible, use NumberUtils in Apache Commons Lang - plenty of great utilities there.
https://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/math/NumberUtils.html#max(int[])
Math.max 仅接受两个参数,不多也不少。
已发布答案的另一个不同解决方案是使用
DoubleStream.of
:Math.max
only takes two arguments, no more and no less.Another different solution to the already posted answers would be using
DoubleStream.of
:Java 8 方式。适用于多个参数:
Java 8 way. Works for multiple parameters:
在不使用第三方库、多次调用相同方法或创建数组的情况下,您可以找到任意数量的双精度数的最大值,如下所示
在您的示例中,可以像这样使用
max
Without using third party libraries, calling the same method more than once or creating an array, you can find the maximum of an arbitrary number of doubles like so
In your example,
max
could be used like this我有一个很简单的想法:
当然,如果你有1000个数字,它就无法使用,但如果你有3或4个,那就简单又快速。
I have a very simple idea:
Of course, if you have 1000 numbers, it's unusable, but if you have 3 or 4, it's easy and fast.
如前所述,Math.max() 仅接受两个参数。它与您当前的语法不完全兼容,但您可以尝试 Collections.max()。
如果您不喜欢这样,您可以随时为其创建自己的方法...
这将采用任意数量的混合数字参数(整数、双精度和浮点数),但返回值是一个对象,因此您必须将其转换为整数、双精度或浮点型。
由于不存在“MY_DOUBLE2”这样的东西,它也可能会抛出错误。
Like mentioned before, Math.max() only takes two arguments. It's not exactly compatible with your current syntax but you could try Collections.max().
If you don't like that you can always create your own method for it...
This will take any number of mixed numeric arguments (Integer, Double and Float) but the return value is an Object so you would have to cast it to Integer, Double or Float.
It might also be throwing an error since there is no such thing as "MY_DOUBLE2".
如果你想做一个简单的,它会像这样
,输出会像这样
参考文献 Java™ 如何编程(早期对象),第十版
if you want to do a simple, it will be like this
and the output will be something like this
References Java™ How To Program (Early Objects), Tenth Edition
你可以这样做:
You can do like this:
没有方法的简单方法
Simple way without methods