我想返回的数字,只要它是在一个限制,否则返回的最大值或最小值的限制。我可以使用Math.min
和Math.max
的组合来实现这一点。
public int limit(int value) {
return Math.max(0, Math.min(value, 10));
}
我想知道是否有一个现有的limit
或range
函数正在被忽略。
如果第三方图书馆很常见的话,欢迎它们(如:公地或番石榴)
发布于 2017-07-20 12:22:41
从版本21开始,番石榴包含了Ints.constrainToRange()
(以及其他原语的等效方法)。来自发布说明
添加了
constrainToRange([type] value, [type] min, [type] max)
方法,该方法将给定值约束到由min
和max
值定义的封闭范围。如果值在范围内,则返回值本身;如果值低于范围,则返回min
;如果超出范围,则返回max
。
由@dimo414从https://stackoverflow.com/a/42968254/122441复制。
不幸的是,这个版本是在2017年7月才出现的,而且在一些项目(参见https://stackoverflow.com/a/40691831/122441)中,番石榴已经破坏了向后兼容性,这就要求我暂时保留版本19。我还感到震惊的是,朗公院和下议院数学都没有这样的成绩!
发布于 2014-03-31 08:59:44
OP在标准库中请求此实现:
int ensureRange(int value, int min, int max) {
return Math.min(Math.max(value, min), max);
}
boolean inRange(int value, int min, int max) {
return (value>= min) && (value<= max);
}
遗憾的是,标准数学图书馆缺乏这些
发布于 2019-07-15 20:02:19
据我所知,这是对Java的要求。在Android世界中,使用Kotlin和Java结合起来是很常见的。如果一些Kotlin用户到达这里(就像我一样),那么他们可以使用coerceIn
扩展函数:
Kotlin代码:
println(10.coerceIn(1, 100)) // 10
println(10.coerceIn(1..100)) // 10
println(0.coerceIn(1, 100)) // 1
println(500.coerceIn(1, 100)) // 100
阅读更多关于官方Kotlin文档的内容。
https://stackoverflow.com/questions/17933493
复制相似问题