Partage
  • Partager sur Facebook
  • Partager sur Twitter

Saidie nombre entier par utilisateur

Sujet résolu
    18 mai 2019 à 18:05:21

    Salut,

    Gros débutant en Java, je cherche à faire rentrer un nombre entier à un utilisateur et à générer une exception en cas d'erreur de saisie (type String) mais je suis bloqué sur la vérification !

    Comment mettre en syntaxe if(saisie-utilisateur est de type String) => erreur !

    int valeur = 0;
    
    try {
        Scanner scan = new scanner(system.in);
        system.out.println("Entrez un nombre entier");
        valeur = scan.nextInt();
        if(saisie utilisateur = string).......
    }
    
    



    Merci

    -
    Edité par Olchiba 18 mai 2019 à 18:16:08

    • Partager sur Facebook
    • Partager sur Twitter
      20 mai 2019 à 8:55:09

      Salut, tout d'abord, je ne sais pas si tu as fait exprès ou non mais fait attention aux majuscules ;)

      Le S de Scanner et de System!

      Sinon, tu étais bien parti avec le try

      Mais un "if" n'est même pas nécessaire à priori, tu peux faire un catch de l'erreur qui te renverra un "InputMismatchException"

      try {
         valeur = scan.nextInt();
      }catch(Exception e){
        System.out.println("Pas le bon type!");
        System.out.println(e);
      }

      L'affichage permet de t'afficher le type de ta variable

      En espérant t'avoir éclairé!

      -
      Edité par Romain29r 20 mai 2019 à 8:55:54

      • Partager sur Facebook
      • Partager sur Twitter
        20 mai 2019 à 18:05:44

        Bonjour,

        Une chose qu'il faut comprendre, c'est que pour l'ordinateur, toutes les saisies sont juste des suites caractères, c à d des String. C'est au programmeur, donc à toi, de décider comment les interpréter.

        Personnellement, je n'aime pas trop nextInt pour lire les saisies utilisateur. nextInt cherche si le prochain "mot" peut être interprété comme un entier et si oui, retourne sa valeur, si non, lance une exception.

        Ce qu'on veut habituellement, c'est savoir si la ligne saisie correspond à un entier. Et comme on peut en avoir besoin plusieurs fois, pour faire les choses proprement, mieux vaut définir une méthode pour ça. Ca donnerait un truc comme ça.

        public static int lireEntier(Scanner sc, String question) {
            int valeur = 0;
            boolean erreur = false;
            do {
                erreur = false;
                System.out.print(question);
                try {
                    valeur = Integer.parseInt(sc.nextLine());
                } catch (NumberFormatException e) {
                    erreur = true;
                    System.out.println("Erreur. Veuillez saisir un nombre entier, svp.");
                }
            } while (erreur);
            return valeur;
        }



        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2019 à 21:22:18

          Bonjour Brubru et Romain et merci pour  vos réponses. Mon sujet est résolu grace à vous

          -
          Edité par Olchiba 23 mai 2019 à 21:24:14

          • Partager sur Facebook
          • Partager sur Twitter

          Saidie nombre entier par 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