Comment faire pour que les boucles en Java augmentent par incréments autres que 1

Si vous avez une boucle for comme celle-ci:

for(j = 0; j<=90; j++){} 

Ça fonctionne bien. Mais quand vous avez une boucle comme celle-ci:

 for(j = 0; j<=90; j+3){} 

ça ne marche pas Est-ce que quelqu’un pourrait m’expliquer ça?

C’est parce que j+3 ne change pas la valeur de j . Vous devez remplacer cela par j = j + 3 ou j += 3 pour que la valeur de j soit augmentée de 3:

 for (j = 0; j <= 90; j += 3) { } 

Puisque personne d’autre ne s’est réellement attaqué Could someone please explain this to me? Je crois que je vais:

j++ est un raccourci, ce n’est pas une opération réelle (ok c’est vraiment, mais supporte moi pour l’explication)

j++ est vraiment égal à l’opération j = j + 1; sauf que ce n’est pas une macro ou quelque chose qui fait le remplacement en ligne. Il y a beaucoup de discussions sur les opérations de i+++++i et ce que cela signifie (car il pourrait être interprété comme i++ + ++i OR (i++)++ + i

Ce qui nous amène à: i++ versus ++i . Ils sont appelés opérateurs de post-increment et de pre-increment . Pouvez-vous deviner pourquoi ils sont ainsi nommés? La partie importante est la façon dont ils sont utilisés dans les missions. Par exemple, vous pourriez faire: j=i++; ou j=++i; Nous allons maintenant faire un exemple d’expérience:

 // declare them all with the same value, for clarity and debug flow purposes ;) int i = 0; int j = 0; int k = 0; // yes we could have already set the value to 5 before, but I chose not to. i = 5; j = i++; k = ++i; print(i, j, k); //pretend this command prints them out nicely //to the console screen or something, it's an example 

Quelles sont les valeurs de i, j et k?

Je vais vous donner les réponses et vous laisser travailler

i = 7, j = 5, k = 7; C’est la puissance des opérateurs pré et post-incrémentation, et les dangers de les utiliser mal. Mais voici la manière alternative d’écrire ce même ordre d’opérations:

 // declare them all with the same value, for clarity and debug flow purposes ;) int i = 0; int j = 0; int k = 0; // yes we could have already set the value to 5 before, but I chose not to. i = 5; j = i; i = i + 1; //post-increment i = i + 1; //pre-increment k = i; print(i, j, k); //pretend this command prints them out nicely //to the console screen or something, it's an example 

Ok, maintenant que je vous ai montré comment fonctionne l’opérateur ++ , examinons pourquoi cela ne fonctionne pas pour j+3 … Rappelez-vous comment je l’ai appelé un “raccourci” plus tôt? C’est juste ça, voyez le deuxième exemple, parce que c’est effectivement ce que fait le compilateur avant d’utiliser la commande (c’est plus compliqué que cela, mais ce n’est pas pour les premières explications). Donc, vous verrez que le “raccourci étendu” a i = ET i + 1 qui est tout ce que votre demande a.

Cela revient aux maths. Une fonction est définie où f(x) = mx + b ou une équation y = mx + b alors comment appelons-nous mx + b … ce n’est certainement pas une fonction ou une équation. Tout au plus c’est une expression. Ce qui est tout j+3 est une expression. Une expression sans affectation ne nous sert à rien, mais prend du temps CPU (en supposant que le compilateur ne l’optimise pas).


J’espère que cela clarifie les choses pour vous et vous donne de la place pour poser de nouvelles questions. À votre santé!

Dans votre exemple, j+=3 incréments de 3.

(Pas grand chose d’autre à dire ici, si c’est lié à la syntaxe, je suggère d’abord Google, mais je suis nouveau ici, donc je peux me tromper.)

 for(j = 0; j<=90; j = j+3) { } 

j+3 n'affectera pas la nouvelle valeur à j, add j=j+3 affectera la nouvelle valeur à j et la boucle montera de 3.

j++ est comme dire j = j+1 , donc dans ce cas, vous atsortingbuez la nouvelle valeur à j comme celle ci-dessus.

Changement

 for(j = 0; j<=90; j+3) 

à

 for(j = 0; j<=90; j=j+3) 

Ça devrait être comme ça

 for(int j = 0; j<=90; j += 3) 

mais attention

 for(int j = 0; j<=90; j =+ 3) 

ou

 for(int j = 0; j<=90; j = j + 3) 

Si vous avez une boucle for comme celle-ci:

 for(j = 0; j<=90; j++){} 

Dans cette boucle, vous utilisez un raccourci fourni par le langage Java, ce qui signifie un opérateur postfix (use-then-change) qui équivaut à j = j + 1, donc la valeur modifiée est initialisée et utilisée pour l'opération suivante.

 for(j = 0; j<=90; j+3){} 

Dans cette boucle, vous ne faites qu'incrémenter votre valeur de 3 sans l'initialiser à la variable j, donc la valeur de j rest modifiée.

La partie “incrémenter” d’une instruction de boucle doit modifier la valeur de la variable d’index pour avoir un effet quelconque. La forme longue de “++ j” est “j = j + 1”. Donc, comme d’autres réponses l’ont dit, la forme correcte de votre incrément est “j = j + 3”, ce qui n’a pas l’incrémentation d’une unité. “j + 3”, comme vous le savez maintenant, ne change pas réellement j; c’est une expression dont l’évaluation n’a aucun effet.