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

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

这适用于升序值,但不适用于降序值。我已经盯着这个有一段时间了,我不知道如何让它适用于递减的值。有什么想法吗?

最佳答案

这样怎么样,当您想要降序序列时,其中 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));

关于Java:生成一定范围内的数字序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5689092/

相关文章:

java - 在 Java 中呈现 Android XML 布局

php - 在 PHP 中渲染波形 - 如何生成更压缩的渲染?

javascript - 计算对象键对值之间的增减

javascript - 使用 BigInt 进行数学计算时的精度问题

python - 在 Python 中计算决定系数

java - 如何从父类(super class)引用的子类获取数据?形状 -> 矩形

java - 如何创建无卡全屏 Android Wear 应用

java - 线程转储 : The hexa-decimal (lock, 条件等) - 它们是什么,以及如何理解它们是什么?

java - 即使定义了类和参数,Java也找不到符号错误?

r - 将 R 与 NodeJS 集成