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();
5 Réponses :
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();
Au lieu de currTime <50
, essayez currTime <= 50
car 50 <50
est False
Ensuite, l'OP aura une boucle infinie.
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 ...
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.
Si
currTime
vaut 50,currTime <50
vautfalse
, donc la bouclewhile
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
et50 <50
estfalse
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.