Comment ai-je pu l'indice d'un tableau de "roulement" lors de l'incrémentation?

Donc, j'ai un Tableau avec une longueur de 4. Quand je l'incrémente de 1 et le nombre est plus grand que la longueur de la matrice, j'aimerais qu'il rollover.

Par exemple:

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

Je suis en train de le résoudre avec des if-else, comme ce

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;

Mais je sens que ce n'est pas une solution appropriée, ou "bon" code.

Modifier: j'ai essayé ta suggestion, mais apparemment, java se comporte de façon étrange avec des nombres négatifs.
Lorsque j'essaie

current_index = (current_index - 1) % textviewlist.length;

Java prend l'indice "0", il diminue de 1 ("-1") et puis

 -1 % 4 = -1

Je m'attendais à 3, voir Wolfram Alpha: -1 mod 4
Mais apparemment, la java % de l'opérateur n'est pas la même que l'opérateur modulo?

Edit 2: j'ai trouvé une solution ici: La meilleure façon de faire de Java module se comporter comme il se doit avec des nombres négatifs? - Débordement De Pile

Que je peux le faire:

current_index -= 1;
current_index = (current_index % textviewlist.length + textviewlist.length)  % textviewlist.length;
InformationsquelleAutor intagli | 2011-07-26