我需要能够在一个范围内生成一系列升序或降序数字。
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);
}
这适用于升序值,但不适用于降序值。我已经盯着这一段时间了,我不知道如何让它适用于下降值。有什么想法吗?
答案 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));