Итак, у меня есть массив с длиной 4. Когда я увеличиваю его на 1, а число становится больше, чем длина массива, я бы хотел, чтобы он переворачивался.
Например:
current_index = 3;
current_index++;
//current_index is now 0 again
current_index = 3;
current_index += 2;
//current_index would be 1
current_index = 0;
current_index--;
//current_index would be 3
В настоящее время я решаю это с помощью if-else, подобного этому
if (current_index == textviewlist.length + 1)
current_index = 0;
else if (current_index == textviewlist.length + 2)
current_index = 1;
else if (current_index == -1)
current_index = 3;
Но я чувствую, что это не подходящее решение или «хороший» код.
Редактировать : Я попробовал ваше предложение, но, очевидно, java ведет себя странно с отрицательными числами.Когда я пытаюсь
current_index = (current_index - 1) % textviewlist.length;
Java берет индекс "0", уменьшает его на 1 ("-1"), а затем
-1 % 4 = -1
Я ожидал, что он будет равен 3, см. Wolfram Alpha: -1 mod 4 Но, очевидно, оператор java% не совпадает с оператором по модулю?
Edit 2 : я нашел решение здесь: Лучший способ заставить модуль Java вести себя, как это должно быть с отрицательными числами?- Переполнение стека
Я могу просто сделать:
current_index -= 1;
current_index = (current_index % textviewlist.length + textviewlist.length) % textviewlist.length;