Как я могу заставить индекс массива «перевернуться» при увеличении?

Итак, у меня есть массив длиной 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;

5
задан Community 23 May 2017 в 12:15
поделиться