Boucle infini

Résolu
maxence973 Messages postés 17 Statut Membre -  
maxence973 Messages postés 17 Statut Membre -
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

  1. _Ritchi_ Messages postés 21130 Date d'inscription   Statut Contributeur Dernière intervention   6 135
     
    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
    1. maxence973 Messages postés 17 Statut Membre
       
      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
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
    1. maxence973 Messages postés 17 Statut Membre
       
      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