7
votes

Comment pourrais-je avoir l'index d'un tableau «Rouler» lors de l'incrémentation?

Donc, j'ai un tableau avec une longueur de 4. Lorsque j'y incrémentez-le 1 et que le nombre augmente de la longueur de la matrice, j'aimerais que le rouleau.

Par exemple: xxx

Je résolvez actuellement cela avec si, comme celui-ci xxx

mais je me sens comme ça n'est pas une solution appropriée, ou "bon" code.

edit : J'ai essayé votre suggestion, mais apparemment Java se comporte étrangement avec des nombres négatifs. Lorsque j'essaie xxx

java prend l'index "0", la diminue de 1 ("-1"), puis xxx

Je m'attendais à ce que cela soit 3, voir Wolfram Alpha: -1 Mod 4 Mais apparemment, l'opérateur Java% n'est pas identique à l'opérateur modulo?

EDIT 2 : J'ai trouvé une solution ici: Le meilleur moyen de faire le comportement du modulus de Java comme Cela devrait avec des nombres négatifs? - Overflow de pile

Je peux juste faire: xxx


0 commentaires

4 Réponses :


10
votes

Vous pouvez utiliser l'opérateur modulo.

current_index = (current_index + n) % 4;


3 commentaires

Merci beaucoup pour votre réponse. +1 :)


Parce que Google classe cette page la plus élevée lorsque la recherche de la même chose, mais dans JavaScript, voici la version JS: actuel_index = (actuel_index + n + 4)% 4;


Le commentaire ci-dessus est #fakenews



5
votes

Divisez l'index incrémenté Modulo de la longueur de la matrice:

current_index = (current_index + n) % textviewlist.length


0 commentaires

4
votes

Vous pouvez utiliser MOD comme suit:

current_index = (current_index + i) % 4.


1 commentaires

Merci beaucoup, je savais que je manquais quelque chose.



2
votes

Il suffit de le mettre à lui-même modulo 4 - ou plutôt, la longueur de la liste - après chaque incrément.

int increment(int old_index, int n) {
    return (old_index + n + textviewlist.length) % textviewlist.length;
}


1 commentaires

Merci pour votre réponse, j'aime vraiment l'idée d'un incrément () fonction. Cependant, que se passe-t-il avec des valeurs négatives? Je viens de modifier ma question pour refléter cela.