0
votes

Javascript tandis que la boucle ne fonctionnera pas correctement

J'essaye de faire ce devoir pour mon introduction à la classe de programmation mais cela ne fonctionnera pas correctement. Ce qui est supposé se produire, c'est que tant que currTime est inférieur à 50, soustrayez 5 et affichez le montant restant.

function display(){
    var currTime = 50;

    while(currTime < 50){
        currTime -= 5;
        document.write("Time remaining: " + currTime + "</br>");
    }

    if(currTime = 25){
        alert("Warning Less than ½ way to launch, time left " + currTime)
    } else if(currTime == 0){
        alert("Blast Off!!! <img src='RocketLaunch.gif' />"); 
    }
}

display();


7 commentaires

Si currTime vaut 50, currTime <50 vaut false , donc la boucle while ne démarrera même jamais.


@NickParsons Ce serait le cas, sauf que while n'est jamais exécuté: 50 n'est jamais inférieur à cinquante. (Et si c'était le cas, ce serait une attente très longue pour qu'il cesse d'être inférieur à cinquante, car vous le diminuez dans la boucle.)


De plus, si un nombre est inférieur à un nombre et que vous continuez à soustraire, il restera inférieur audit nombre


oh ouais, j'essayais juste et j'ai oublié de le supprimer avant de le publier. attendez


currTime commence à 50 et 50 <50 est false


Il n'entrera pas dans la boucle car l'heure actuelle n'est pas inférieure à 50. Elle est égale à 50.


1, In Your while 50 est égal à 50 et non inférieur. 2, currTime = 25 => Vous allez rendre la variable égale à 25, ce n'est pas une comparaison.


5 Réponses :


0
votes

Modifiez la condition dans la boucle while. Ne renvoyez pas le document.write et créez l'affichage de la fonction. Déplacez les instructions if dans la boucle

var currTime = 50;

function display() {
  while (currTime <= 50 && currTime >= 5) {
    currTime -= 5;
    document.write("Time remaining: " + currTime + "</br>");
    if (currTime == 25)
      console.log("Warning Less than ½ way to launch, time left " + currTime)
    else if (currTime == 0)
      console.log("Blast Off!!! <img src='RocketLaunch.gif' />");
  }

}
display();


0 commentaires

-1
votes
  1. La boucle ne démarre pas
  2. même si vous mettez currTime = 49 ou moins, la boucle ne se terminera pas. Vous devez spécifier quelque chose pour terminer la boucle.

0 commentaires

-1
votes

Au lieu de currTime <50 , essayez currTime <= 50 car 50 <50 est False


1 commentaires

Ensuite, l'OP aura une boucle infinie.



1
votes

Je suppose que c'est ce que vous voulez qu'il fasse, il y a eu quelques problèmes, comme vous pouvez le voir dans les commentaires.

function display(){
  var currTime = 50;

  // This should probably run as long as `currTime` is greater than `0`.
  while(currTime > 0) { 
    currTime -= 5;
    console.log("Time remaining: " + currTime + "</br>");

    // Move this `if` inside the while.
    if(currTime == 25){ // replace `=` with `==` for an equality check
        console.log("Warning Less than ½ way to launch, time left " + currTime)
    } else if(currTime == 0){
        console.log("Blast Off!!! <img src='RocketLaunch.gif' />"); 
    }    
  }
}

display();

J'ai remplacé les appels document.write et alert par console.log car c'est plus convivial lors du débogage ...


0 commentaires

0
votes

Modifiez simplement votre première instruction while car elle entraîne une fausse valeur
while (currTime <50) le fait inverser while (currTime> 50) et il commencera à fonctionner.


0 commentaires