11522 sujets

JavaScript, DOM et API Web HTML5

Bonjour, j'ai commencé à coder une simple fonction qui renvoie le statut d'une personne en fonction de l'age entré.

Je vérifie l'age pour qu'il soit valide entre 0 et 120 et différent de Nan, le code fonctionnait jusqu’à ce que je rajoute une ligne pour sortir de la fonction si l'utilisateur ne tapait "rien".

1-J'aimerais comprendre pourquoi le code ne fonctionne plus.
2-N'y a t-il pas un moyen de vérifier la condition de sortie du programme ailleurs dans le code?
3-Peut t-on simplifier ce code et avez vous des améliorations à proposer dans un but éducatif?

Voici le fiddle https://jsfiddle.net/tankarasu/5kb9jody/44/

Merci
Modérateur
Et l'eau,

tankarasu a écrit :

1-J'aimerais comprendre pourquoi le code ne fonctionne plus.

Je t'invite à me lire pour que tu comprennes et apprennes de tes erreurs.

while(true){
    var age = parseInt(prompt("veuillez entrer un âge valide compris entre 0 et 120 ans svp "), 10);
    if(!isNaN(age) && age > 0 && age < 120){
        if(age < 18){
               console.log("vous êtes mineur!");
        }else if(age >=18 && age < 45){
        	console.log("vous êtes majeur mais pas sénior!");
        }else if(age >= 45 && age <65){
        	console.log("vous êtes sénior mais pas retraité!");
        }else if(age >=65){
        	console.log("vous êtes retraité!");
        }
        break;
    }
}

Tant que la réponse n'est pas bonne, tu réaffiches la question !
Sémantiquement, c'est juste. Mais ce genre de technique est dangereuse puisqu'on déclare une boucle infinie et il faut en sortir !

tankarasu a écrit :

2-N'y a t-il pas un moyen de vérifier la condition de sortie du programme ailleurs dans le code?

????

tankarasu a écrit :

3-Peut t-on simplifier ce code et avez vous des améliorations à proposer dans un but éducatif?

Non, je ne vois pas
Modifié par niuxe (22 Jul 2019 - 01:49)
Modérateur
Désolé, je n'avais pas vu ta réponse.

Pour ton souci, c'est simple.

Est ce que la donnée insérée est un chiffre et qu'elle est comprise entre 0 et 120 ? sinon....
salut, normalement oui.

j'ai encore modifié un peu le code https://jsfiddle.net/tankarasu/5kb9jody/48/

la pas de problème avec l'option quitter si la valeur entrée est vide sauf que maintenant si je rentre une string il quitte aussi alors qu'il devrait redemander un nombre valide. Je sens à chaque fois que je suis proche de la solution mais il me manque qq chose pour cerner la logique à 100pcent.
Modérateur

while(true){
    let reponse = prompt("veuillez entrer un âge valide compris entre 0 et 120 ans svp "),
        age = parseInt(reponse, 10);
    if (!isNaN(age) && age > 0 && age < 120) {
        if (age < 18) {
            console.log("vous êtes mineur!");
        } else if (age >= 18 && age < 45) {
            console.log("vous êtes majeur mais pas sénior!");
        } else if (age >= 45 && age < 65) {
            console.log("vous êtes sénior mais pas retraité!");
        } else if (age >= 65) {
            console.log("vous êtes retraité!");
        }
        break;
    } else {
        if (isNaN(age) && reponse.trim() === '') {
            break;
        } else {
            continue;
        }
    }
}


Au passage, ton return false n'est pas bon puisque tu n'es pas dans une fonction...

<<<EDIT
si tu veux utiliser le boolean, alors utilise une variable.
exemple :

let mauvaise_reponse = true;
while(mauvaise_reponse){
    //...
    mauvaise_reponse = false;
    //etc.
    //etc.
}

EDIT;
Modifié par niuxe (24 Jul 2019 - 16:08)
Meilleure solution