Итак, у меня есть массив длиной 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% не то же самое, что оператор по модулю?
Редактировать 2 : Я нашел здесь решение: Лучший способ заставить модуль Java вести себя так, как должен, с отрицательными числами? - Stack Overflow
Я могу просто сделать:
current_index -= 1;
current_index = (current_index % textviewlist.length + textviewlist.length) % textviewlist.length;