Partage
  • Partager sur Facebook
  • Partager sur Twitter

Condition If Else, blindage (test)

Sujet résolu
    21 novembre 2017 à 21:28:00

    Bonjour bonjour,

    J'suis actuellement entrain de faire le cours "Apprendre à coder en JavaScript" et j'me suis pris au jeu, et depuis 10 / 20 minutes, je suis entrain de blindé une simple condition.

    Le programme doit demander à l'utilisateur de saisir un nombre entre 0 et 100 et le code doit lui répondre donc si le nombre est compris oui ou non entre 0 et 100. Jusque là tout va bien.

    Ensuite, je me suis dit que si on mettait quelque chose d'autre, comme une lettre, essayer de lui faire dire "Ceci n'est pas un nombre", ça c'est fait. 

    Mais je bloque toujours, si maintenant, il advenait que j'entre juste rien ^^ Je n'arrive pas à la blindé parfaitement. Avec mes connaissances qui sont très basse ahah

    Voici mon code, si quelqu'un peut m'éclairer, je lui en serais très reconnaissant :D

    var nombre = prompt("Veuillez entrer un nombre compris entre 0 et 100 ici :");
    
    if (nombre === ""){ // condition champ vide
    	console.log("Vous n'auriez pas tenté de planter le programme par hasard ?");
    } else { // test non-vide donc conversion en nombre
    	nombre = Number(nombre);
    } 
    
    if ((nombre >= 0) && (nombre <= 100)) { // condition nombre entre 0 et 100
    	console.log("Le nombre " + nombre + " est compris entre 0 et 100 ");
    } else if ((nombre > 100 || nombre < 0)) { // condition nombre pas entre 0 et 100
    	console.log("Le nombre " + nombre + " n'est pas compris entre 0 et 100");
    } else { // sinon bah c'est pas un chiffre
    	console.log("Ce que vous avez saisi n'est pas un nombre. Pas bien !");
    }

    Merci d'avance

    (J'suis passer par plein de méthode, tests, .. et c'est celui qui se rapproche le plus de ce que j'ai en tête ahah )

    -
    Edité par x1mus 21 novembre 2017 à 21:36:58

    • Partager sur Facebook
    • Partager sur Twitter
      21 novembre 2017 à 21:56:30

      Hello,

      Une simple condition comme celle-ci devrait faire l'affaire pour t'assurer de l'intégrité de la valeur :

      if (nombre.trim() === '' || Number.isNaN( Number(nombre) )) {
         // error ...
      }



      • Partager sur Facebook
      • Partager sur Twitter
        21 novembre 2017 à 22:46:44

        Bonsoir MaxBresil

        Le soucis est que quand tu demande à l'utilisateur d'entrer un nombre entre 0 et 100 dans ta variable "Number(prompt())" et qu'il laisse le champ vide, la variable va automatiquement retourner la valeur 0 de type number.


        Voici un aperçu de la variable testée après avoir laissé le champ vide.

        L'OPERATEUR typeof permet de renvoyer de quel type est une variable.


        Voici la solution complète pour ton blindage avec des explications.

        /* On demande à l'utilisateur d'entrer un nombre */
        /* ### La METHODE trim() permet de retirer les espace et tabulation à une variable ### */
        var reponse = prompt("Entre un nombre de 0 a 100").trim(); // La variable reponse renvoie une variable de type string (chaîne de caractères).
        
        
        /* On convertit la réponse de l'utilisateur en nombre */
        /* ### L'OBJET Number() en simplifiant l'explication, permet de convertir une variable de type string (chaine de caractères) en variable de type number (nombre) ### */
        var nombre = Number(reponse); // La variable nombre renvoie une variable de type number (nombre) 
        
        /* Si la variable nombre est comprise entre 0 et 100 et que la variable reponse n'est pas vide */
        if(nombre >= 0 && nombre <= 100 && reponse !== "") {
        console.log("Yeah, tu as compris."); // ===> On affiche un message de succès
        
        /* Sinon si la variable nombre n'est pas un nombre */
        /* ### La FONCTION isNaN() permet de vérifier si une variable est de type number (nombre) ----> elle renvoie true ou false ### */
        } else if(isNaN(nombre) === true) {
        console.log("J'ai dit un nombre, pas des caractères !"); // ===> On affiche un message d'erreur
        
        /* Sinon (donc pas compris entre 0 et 100) */
        } else {
        	console.log("Le nombre n'est pas compris entre 0 et 100.") // ===> On affiche un message d'erreur
        }


        Plus d'explications sur les fonctions/méthodes utilisées :

        L'OPERATEUR typeof

        https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_typeof

        La METHODE trim()

        https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/String/trim

        L'OBJET Number

        https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Number

        La FONCTION isNaN()

        https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/isNaN

        -
        Edité par M0RC 21 novembre 2017 à 23:19:00

        • Partager sur Facebook
        • Partager sur Twitter

        Condition If Else, blindage (test)

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown