Boucle infini

Résolu/Fermé
maxence973 Messages postés 13 Date d'inscription lundi 20 juillet 2015 Statut Membre Dernière intervention 6 janvier 2019 - Modifié le 5 janv. 2019 à 17:26
maxence973 Messages postés 13 Date d'inscription lundi 20 juillet 2015 Statut Membre Dernière intervention 6 janvier 2019 - 6 janv. 2019 à 14:20
Bonjour,
Je débute les études en informatique et j'essaye de faire des exercices javaScript pour m’entraîner
un des exercices étant de créer un programme gérant un tableau de contact (il y a déjà 2 contacts d’enregistré)
si l'utilisateur rentre 1 il rentre un contact
si il rentre 2 il consulte la liste des contacts de type "noms: <le nom> prénom <le prénom>"
et si il rentre 0 cela stoppe le programme
j'ai pour le moment fait ça

let choix;
let contact=["Carole","Lévisse","Mélodie","Nelsonne"];
console.log("Bienvenue dans le gestionnaire de contact! \n 1 : ajouter un contact. \n 2 : afficher la liste de contact \n ° :quitter");
while(choix!==0){
         choix=prompt("Que voulez vous faire?");
         if(choix==1){
         contact.push(prompt("indique le Prénom"));
         contact.push(prompt("indiquer le Nom"));
         }
         if(choix==2){
                for(let i=0;i<contact.length;i++){
                         if(i%2===0){
                                console.log("prénom: "+contact[i]);
                         }
                        else{
                               console.log("prénom: "+contact[i]);
                        }
               }
        }
}
console.log("au revoir");


EDIT : Ajout des balises de code

le soucis étant que cela crée une boucle infini même si je rentre 0 comme valeur lors du prompt
donc voilà si vous avez une solution ou même une amélioration possible je suis preneur ^^
merci à vous !

2 réponses

_Ritchi_ Messages postés 21210 Date d'inscription samedi 17 mars 2007 Statut Contributeur Dernière intervention 20 avril 2024 6 058
5 janv. 2019 à 12:41
Bonjour,

Juste un détail: tu parles du choix "0" pour quitter mais dans ton code c'est le caractère "°" qui est utilisé dans le message d'accueil.
Perso, je ferais un "while(True)" et dans la boucle je rajouterais un "if (choix==0) {break}"
(ne connaissant pas la syntaxe javascript, je compte sur toi pour la trouver)

Ritchi
1
maxence973 Messages postés 13 Date d'inscription lundi 20 juillet 2015 Statut Membre Dernière intervention 6 janvier 2019
6 janv. 2019 à 14:19
Ah oui effectivement pour le ° c'est une erreur de frappe c'est bien 0 qu'il faut normalement rentrer
du coups j'ai essayé avec le while(True) et ça a l'air bon merci beaucoup !
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
5 janv. 2019 à 17:31
Bonjour
ton code est presque bon... le souci c'est qu'un PROMPT retourne une STRING.
Hors.. vérifier avec === ou !== c'est pour la comparaison de valeur ET de type.
Donc soit tu mets tes valeurs entre guillemets
while(choix!=="0"){

soit tu n'utilises qu'un seul = dans le !=
while(choix!=0){

1
maxence973 Messages postés 13 Date d'inscription lundi 20 juillet 2015 Statut Membre Dernière intervention 6 janvier 2019
6 janv. 2019 à 14:20
Ah oui c'est vraie du coups j'ai mis des guillemets et ça donne ça

let choix;
let contact=["Carole","Lévisse","Mélodie","Nelsonne"];
console.log("Bienvenue dans le gestionnaire de contact! \n 1 : ajouter un contact. \n 2 : afficher la liste de contact \n 0 :quitter");
while(true){
choix=prompt("Que voulez vous faire?");
if(choix=="1"){
contact.push(prompt("indique le Prénom"));
contact.push(prompt("indiquer le Nom"));
}
if(choix=="2"){
for(let i=0;i<contact.length;i++){
if(i%2===0){
console.log("prénom: "+contact[i]);
}
else{
console.log("prénom: "+contact[i]);
}
}
}
if(choix=="0"){
break;
}
}
console.log("au revoir");
0