我需要能够在一定范围内生成一系列升序或降序数字。
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/