1
votes

J'essaie d'imprimer tous les nombres pairs de 10 à 40 en utilisant juste une boucle while en Javascript

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++
}


2 commentaires

La boucle s'arrête dès que x % 2 == 0 est false , avant d'atteindre le point où x !== 41 est false .


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 si x < 41 .


3 Réponses :


1
votes
x = 10;
while(x < 41) {
  if(x % 2 == 0) {
    console.log(x);
  }
  x++;
}

0 commentaires

3
votes

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.


2 commentaires

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.



2
votes

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;
}


0 commentaires