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 == 0estfalse, avant d'atteindre le point oùx !== 41estfalse.Juste un petit mot sur les boucles while, les conditions qui rompent avec une égalité stricte ne sont pas les meilleures.
x !== 41serait mieux fait six < 41.