Вы можете использовать оператор модуля %
, который возвращает остаток между двумя операндами. Например, если вы хотите, чтобы максимальное значение равнялось 13, при условии, что вы индексируете с помощью переменной i
, вы можете сделать array[i % 14]
, что приведет к тому, что индекс будет находиться в диапазоне 0 -> 13. не уверен, есть ли способ создать пользовательский тип с этим свойством, если только вы не создали класс и не реализовали методы для операторов сложения и вычитания, чтобы создать то же поведение, что и для целого числа без знака. Вот суть этого:
public class MaxInt {
private final int max;
private int value;
public MaxInt(int max, int value) {
this.max = max;
this.value = value;
}
public MaxInt plus(int a) {
return new MaxInt(this.max, (this.value + a) % (this.max + 1));
}
public MaxInt minus(int a) {
return new MaxInt(this.max, (this.value - a) % (this.max + 1));
}
public getValue() {
return this.value;
}
}
Тогда вы можете сделать то же самое с new MaxInt(13, 0)
, и ваше значение будет между 0 -> 13.