Как насчет этого, где 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));