Java:生成一系列范围内的数字序列?

时间:2011-04-16 19:41:42

标签: java math

我需要能够在一个范围内生成一系列升序或降序数字。

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 个答案:

答案 0 :(得分:1)

当你想要一个递减的序列时,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));