Java - 限制最小值和最大值之间的数量

2022-08-31 22:30:58

我想返回数字,只要它落在限制范围内,否则返回限制的最大值或最小值。我可以使用 和 的组合来执行此操作。Math.minMath.max

public int limit(int value) {
    return Math.max(0, Math.min(value, 10));
}

我想知道是否有我忽略的现有功能或功能。
欢迎第三方图书馆,如果它们很常见(例如:共享资源或番石榴)limitrange


答案 1

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);
}

可惜标准数学库缺少这些


答案 2

从版本21开始,Guava包括Ints.constrainToRange()(以及其他基元的等效方法)。从发行说明中

添加了将给定值约束为 由 和 值定义的封闭范围的方法。如果值在范围内,则返回值本身,如果它低于范围,如果它高于范围,则返回值本身。constrainToRange([type] value, [type] min, [type] max)minmaxminmax

由@dimo414从 https://stackoverflow.com/a/42968254/122441 复制。

不幸的是,这个版本是2017年7月的最近版本,在某些项目中(参见 https://stackoverflow.com/a/40691831/122441),Guava已经破坏了向后兼容性,要求我现在留在版本19上。我也感到震惊的是,Commons Lang和Commons Math都没有它!:(