J'essaie d'imprimer tous les nombres pairs de 10 à 40 en utilisant juste une boucle while en Javascript. Mais lorsque j'exécute le code dans la console du navigateur Chrome, je ne vois que 10. Voici mon code:
var x = 10; while (x !== 41 && x % 2 == 0){ console.log(x) x++ }
3 Réponses :
x = 10; while(x < 41) { if(x % 2 == 0) { console.log(x); } x++; }
Le problème est la partie x % 2 == 0
. Dès que x
devient 11
la boucle se termine, car cette condition est évaluée à false
. Pour que la boucle continue, les deux conditions à l'intérieur des parantheses while()
doivent être évaluées à true
lorsque vous utilisez l'opérateur &&
.
Vous devez déplacer cette condition spécifique vers une instruction if
à l'intérieur de la boucle, comme ceci:
var x = 10; while (x !== 41) { if (x % 2 == 0) console.log(x); x++; }
La solution ci-dessus continue jusqu'à ce que x
soit 41
auquel cas elle quittera la boucle et console.log(x)
que l' console.log(x)
, si x % 2
est égal à 0
( x
est pair).
Un conseil que je voudrais vous donner est de prendre l'habitude d'utiliser ===
au lieu de ==
. Cela garantira que votre valeur est du type correct (par exemple, x == 2
est true
quand x
est "2"
mais x === 2
retournera false
car le type est différent) et peut vous aider à détecter quelques erreurs lors du débogage.
Une autre astuce serait d'utiliser x < 41
au lieu de x !== 41
, il est plus couramment utilisé et il est plus facile à lire pour la plupart des gens.
Merci de l'expliquer si complètement et des conseils. Je veillerai à m'en souvenir pour le moment. @Angelos Chalaris
@I_am_a_Noob Si vous avez trouvé une réponse (une seule, la mienne ou celle de quelqu'un d'autre) plus utile que les autres et / ou résolvant votre problème, assurez-vous de cliquer sur la coche sous le compteur de votes pour la marquer comme réponse acceptée. Cela aidera les futurs lecteurs à trouver la meilleure réponse à votre question.
Lorsque vous incrémentez x
de un, à la première itération, la valeur de x
devient 11 (impair) et la condition while est rompue. Vous pouvez incrémenter x de 2 comme ci-dessous.
var x = 10; while (x <= 40){ console.log(x); x += 2; }
La boucle s'arrête dès que
x % 2 == 0
estfalse
, avant d'atteindre le point oùx !== 41
estfalse
.Juste un petit mot sur les boucles while, les conditions qui rompent avec une égalité stricte ne sont pas les meilleures.
x !== 41
serait mieux fait six < 41
.