J'essaie d'exécuter cette «application» bancaire simple, mais je ne peux pas obtenir les valeurs à la mise à jour correctement. J'ai essayé de demander à UserDesposit en appuyant sur "D" comme ma première entrée, puis invitez le poste de recherche en appuyant sur "B", mais la valeur serait toujours alertée comme 0 quel que soit le numéro que je saisi. Également sur ma première course, je ne peux pas l'obtenir d'arrêter de fumer après avoir poussé des choix - mais je peux l'obtenir de cesser de fumer si je devais appuyer sur "Q" comme mon premier choix. Quelqu'un peut-il m'aider à résoudre ces problèmes? Merci!
p>
function userBank() { let userBalance = 0; let continueBanking = true; let userInput = prompt ("Enter 'q' to quit immediately, Enter 'w' to withdraw money, Enter 'd' to deposit money, Enter 'b' to view your balance."); while (continueBanking == true) { if (userInput == "w") { let userWithdraw = prompt ("How much would you like to withdraw?"); userBalance = userWithdraw; userBank(); } else if (userInput == "d") { let userDeposit = prompt("How much would you like to deposit?"); userBalance = userDeposit; userBank(); } else if (userInput == "b") { alert("Here is your current balance: " + userBalance); userBank(); } else if (userInput == "q") { alert("Banking app is now closing."); continueBanking == false; return; } else { alert("Invalid user input. Try again."); return; } } } userBank();
3 Réponses :
L'invite qui attribue une valeur à UserInput n'est en dehors de votre boucle tandis que: vous obtenez une valeur seulement une fois, alors vous continuez à retraiter cette même valeur. Au lieu de cela, vous appelez de manière récursive Bankbank (). Chaque fois que vous faites cela, vous êtes piégé dans une autre boucle de traitement de la même entrée de plus et plus. P>
Parce que vous l'appelez récursivement après le dépôt, vous nez toujours le compte avant de demander la balance.
Faites cela à la place: P>
operations.balance(100) // Should alert 100 balance and return 100
Parce que vous l'appelez de manière récursive après le dépôt, vous avez toujours nul le compte avant de demander le solde.
Ce commentaire devrait être dans la réponse.
Mais les appels récursifs sont faux, car vous devez entrer q code> plusieurs fois pour sortir.
Vous ne devriez pas appeler la fonction récursivement. Il répète déjà en raison du La récursivité permet également de sortir de l'application. Vous devez entrer Il vous suffit de déplacer l'invite pour l'action à l'intérieur de la boucle au lieu d'appeler à nouveau la fonction. P > Vous n'ayez pas non plus l'ajout et la soustraction des montants que l'utilisateur dépose et retire, vous définissez simplement la balance à eux. p> p> pendant code> boucle. Chaque niveau de récursivité a sa propre copie de la variable code> userbalance code>, qui est initialisée à
0 code>.
q code> autant de fois qu'il a recouvré. P>
function userBank() {
let userBalance = 0;
while (true) {
let userInput = prompt("Enter 'q' to quit immediately, Enter 'w' to withdraw money, Enter 'd' to deposit money, Enter 'b' to view your balance.");
if (userInput == "w") {
let userWithdraw = prompt("How much would you like to withdraw?");
userBalance -= parseFloat(userWithdraw);
} else if (userInput == "d") {
let userDeposit = prompt("How much would you like to deposit?");
userBalance += parseFloat(userDeposit);
} else if (userInput == "b") {
alert("Here is your current balance: " + userBalance);
} else if (userInput == "q") {
alert("Banking app is now closing.");
break;
} else {
alert("Invalid user input. Try again.");
}
}
}
userBank();
Pour ajouter à cela, vous ne voulez probablement pas non plus Attribuer i> userbalance code> au montant de la dépôt ou du retrait; Au contraire, vous voudrez ajouter i> et soustraire i>.
Je me faisais juste en train de résoudre ce problème pendant que vous avez commenté.
Ah, ça a du sens! Acclamations!
@Limino N'oubliez pas d'accepter la réponse qui aidait le mieux.
Il n'y a pas besoin de la variable code> Continuer banking code>, puisque vous revenez de la fonction lorsque vous l'avez défini sur
false code>.