Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как ограничить число диапазоном

Короткий ответ

С Java 21 есть Math.clamp(value, min, max):

void main() {
    IO.println(Math.clamp(150, 0, 100));
    IO.println(Math.clamp(-5, 0, 100));
    IO.println(Math.clamp(42, 0, 100));
}

Результат:

100
0
42

Через min и max

Тот же результат даёт сочетание Math.min() и Math.max() — так пишут в старых версиях Java:

void main() {
    int volume = 120;
    int limited = Math.max(0, Math.min(volume, 100));
 
    IO.println(limited);
}

Результат:

100

Дробные числа

clamp() работает и с double:

void main() {
    double opacity = 1.4;
    IO.println(Math.clamp(opacity, 0.0, 1.0));
}

Результат:

1.0

Частая ошибка

Перепутать порядок границ. Math.clamp() проверяет, что минимум не больше максимума, и выбрасывает исключение:

void main() {
    IO.println(Math.clamp(50, 100, 0));
}

Результат:

Exception in thread "main" java.lang.IllegalArgumentException: 100 > 0

Функции из этого ответа

  • Math.min() — Возвращает меньшее из двух чисел.
  • Math.max() — Возвращает большее из двух чисел.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.