Java: генерировать последовательность чисел в диапазоне? - PullRequest
1 голос
/ 16 апреля 2011

Мне нужно иметь возможность генерировать серию возрастающих или убывающих чисел в пределах диапазона.

public int nextInRange(int last, int min, int max, int delta, boolean descending) {
        delta *= descending ? -1 : 1;

        int result = last + delta;
        result %= max;
        return Math.max(result, min);
}

Это прекрасно работает для возрастающих значений, но не для нисходящих. Я смотрел на это некоторое время, и я не уверен, как заставить это работать для нисходящих значений. Есть идеи?

1 Ответ

1 голос
/ 16 апреля 2011

Как насчет этого, где delta отрицательно, если вы хотите нисходящую последовательность?

public int nextInRange(int last, int min, int max, int delta) {
    int result = last + delta;

    // now clip to min and max
    if (result > max) {
        result = max;
    } else if (result < min) {
        result = min;
    }

    return result;
}

или, возможно, не так просто, тело функции должно быть одной строкой:

return Math.min(max, Math.max(last + delta, min));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...