Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème saisie Utilisateur

Obliger l'utilisateur à saisir 4 chiffres

    18 septembre 2019 à 17:35:58

    Bonjour

    Je suis nouveau en langage de programmation Java. Je ne sais pas si cette question à été déjà posée mais après plusieurs recherche je n'ai pas trouvé la réponse.

    Le principe c'est que l'utilisateur doit saisir un nombre à 4 chiffres obligatoirement.

    Si il saisi une autre chose qu'un chiffre je catch mais je ne gère pas le cas ou il tape que 3 chiffres par exemple.

    J'ai voulu récupérer la saisi et le mettre en string dans un tableau et faire un if(si il n'y a rien dans le tableau) je recommence mais je n'y arrive pas.

    Comment je peux faire en sorte qu'il renseigne 4 chiffres pas 1 de plus et pas 1 de moins.

    Je ne met pas mon code pour l'instant mais si il le faut je le mettrais.

    Merci pour vos réponse.

    Bonne soirée.

    • Partager sur Facebook
    • Partager sur Twitter
      19 septembre 2019 à 12:13:40

      bonjour,

      un nombre à 4 chiffres est un nombre  compris dans l'intervalle 1000 à 10 000(exclus).

      Pour vérifier que l'entrée de l'utilisateur correspond à nombre tu peux traiter le cast en int de cette dernière dans un bloc try/cactch qui va capturer une exception de type NumberFormatException .

             int nombre;
              boolean nbTrouve=false;  
              String entree;//nombre en string
      
              System.out.println("entrez un nombre à 4 chiffres: ");
      
              try(  Scanner sc = new Scanner(System.in) ){
                  while ( nbTrouve ==false )  { // sortir du while si le nombre est trouvé
                  
                  entree = sc.nextLine();
                  /**
                   * si le nombre entré n'est pas un nombre
                   * alors une exception sera capturée dans le catch
                   */
                  try {
                      nombre = Integer.parseInt(entree);
                      //vérifie que le nombre a bien 4 chiffres
                      if( nombre>=1000 && nombre<=10_000_000){
                          System.out.println("nombre = : "+nombre);
                          nbTrouve = true;//quitter la boucle
      ;
                      }else{
                          System.out.println(nombre + " n'est pas un nombre à 4 chiffres, resaisir un nombre à 4 chiffres:");
                      }
      
                  } catch (NumberFormatException e) { // l'entrée utilisateur n'est pas un nombre
                      System.out.println(entree + " n'est pas un nombre,  resaisir un nombre à 4 chiffres:");
                  }
               
                  
              }//fin 1er try



      -
      Edité par armel.mc 19 septembre 2019 à 12:16:06

      • Partager sur Facebook
      • Partager sur Twitter
        19 septembre 2019 à 14:06:11

        Bonjour,

        Si ton but est de récupérer une combinaison de 4 chiffres, et non un nombre de 4 chiffres (projet 3 du parcours dev java ? )alors la solution de Armel.mc ne te conviendra pas (ou ne suffira pas) car dans le cas où la combinaison saisie commence par au moins un 0 alors tu n'auras pas une combinaison de 4 chiffres en retour. Pour mieux me faire comprendre :

        La saisie de combinaison est : 0023

        Le code d'armel lui récupérera : 23

        Du coup si c'est bien une combinaison de 4 chiffres que tu souhaites récupérer, selon moi (je suis les cours pour le projet 3 justement), il te vaudrait mieux récupérer soit une suite de 4 caractères , soit une String de 4 caractères en vérifiant que ces caractères soient des nombres et que la longueur de ta String soit bien de 4 caractères.

        Bonne journée

        • Partager sur Facebook
        • Partager sur Twitter
          19 septembre 2019 à 14:27:22

          Bonjour

          Merci pour votre retour.

          Effectivement la solution d'Armel, je l'ai envisagé mais, comme tu dis Geraud, elle ne gère pas le cas ou le nombre commence par un 0.

          Effectivement c'est bien le projet 3 que je suis. Tu fais le parcours développeur Java ?

          Bonne journée

          • Partager sur Facebook
          • Partager sur Twitter
            19 septembre 2019 à 15:51:46

            BenoîtBrichet1 a écrit:

            ton message à la base parlait d'une suite de 4 chiffres. donc je ne pouvais pas supposer que les chiffres exprimés en système octal( commençant par 0 en Java ) faisaient aussi partie de cette suite.

            Après une combinaison de 4 chiffres quelconques peut aussi se vérifier par une expression régulière:

            if( entree.matches("\\d{4}")){
                 System.out.println("nombre = : "+entree);
                 nbTrouve = true;//quitter la boucle
            }else{
                 System.out.println(entree + " n'est pas un nombre à 4 chiffres, resaisir un nombre à 4 chiffres:");
             } 



            -
            Edité par armel.mc 19 septembre 2019 à 15:52:32

            • Partager sur Facebook
            • Partager sur Twitter
              19 septembre 2019 à 16:20:10

              Oui autant pour moi, le message n'était pas clair.

              Merci pour vos conseils.

              Bonne journée

              -
              Edité par BenoîtBrichet1 19 septembre 2019 à 16:20:28

              • Partager sur Facebook
              • Partager sur Twitter
                19 septembre 2019 à 16:37:20

                BenoîtBrichet1 a écrit:

                Effectivement c'est bien le projet 3 que je suis. Tu fais le parcours développeur Java ?

                Oui je fais le parcours Dev JAVA en parallèle.

                • Partager sur Facebook
                • Partager sur Twitter

                Problème saisie Utilisateur

                × 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