IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Probleme dans une boucle do while [Débutant(e)]


Sujet :

Langage Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut Probleme dans une boucle do while
    Bonjour,
    je ne comprend pas ou est mon erreur dans la boucle do while
    quant je demande si je veux recommencer à entrer des valeurs il saute la première instruction
    et me demande d'entrer la deuxième entrée ( la première exécution du programme est correcte c'est quant je veux recommencer que ça va pas )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    public class MediathequeNass {
     
            public static void main(String[] args) {
             int reponse =0;
             Scanner sc = new Scanner(System.in);
           do {
      // liste d'instructions
     
     
               System.out.println("Entrer le titre du livre");
              String   entreTitreLivre = sc.nextLine();
                System.out.println("Entrer l'auteur");
              String  entreAuteurLivre = sc.nextLine();
                System.out.println("Entrer le genre");
             String   entreGenreLivre = sc.nextLine();
                System.out.println("Entrer le prix");
             int   entrePrixLivre = sc.nextInt();
                System.out.println("Entrer l'année de parution");
             int   entreAnneLivre = sc.nextInt();
             sc.nextLine();
           Livres livre1 = new Livres (entreTitreLivre,entreAuteurLivre,entreGenreLivre,entrePrixLivre,entreAnneLivre);
     
           System.out.println(livre1.getTitreLivre()+" / "+livre1.getAuteurLivre()+" / "+livre1.getGenreLivre());
     
           do{
               System.out.println("Souhaiez vous entrez d'autres livres ? (1 pour oui 2 pour  non )");
               reponse=sc.nextInt();
     
           }while(reponse!=1 && reponse!=2);
     
     
           }while(reponse==1) ;  
           System.out.println("Merci au revoir");
     
           }
     
    }
    merci pour votre aide

  2. #2
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    Serna,

    je ne comprends pas ou se situe ton problème quand tu dis que tu saute la première instruction est-ce celle la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println("Entrer le titre du livre");
    String   entreTitreLivre = sc.nextLine();
    je n'aurais pas fais comme ca à ta place, mais tes boucles do....while sont correctes
    donne nous le code de ta classe Livres ca vient peut être de là

    Marc
    Développeur Java
    Site Web

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    Bonsoir,

    voila ce qu'affiche la console ( en gras l'affichage après la premier passage de la boucle )

    Entrer le titre du livre
    Ubik
    Entrer l'auteur
    Philippe Dick
    Entrer le genre
    Science Fiction
    Entrer le prix
    10
    Entrer l'année de parution
    1970
    Ubik / Science Fiction / Philippe Dick
    Souhaiez vous entrez d'autres livres ? (1 pour oui 2 pour non )
    1
    Entrer le titre du livre
    Entrer l'auteur

    ça devrait attendre que j'entre quelque chose au clavier après Entrer le titre du livre mais ça enchaine directe avec le deuxième sc.nextline().

    je met la classe Livres ( bien que pour l'instant elle ne fasse rien de spéciale, il n'y a pas de méthode )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    public class Livres { // initialisation des attributs
       protected String titreLivre;
       protected String genreLivre;
       protected String auteurLivre;
      protected  int prixLivre ;
      protected  int anneLivre;
     
      public Livres ()  // constructeur par défaut
      {
         titreLivre ="";
         genreLivre="";
         auteurLivre="";
         prixLivre=0 ;
        anneLivre=0;
      }
        public Livres (String pTitreLivre,String pGenreLivre,String pAuteurLivre,int pPrixLivre,int pAnneLivre) // constructeur avec parametre
        {
         titreLivre =pTitreLivre;
         genreLivre=pGenreLivre;
         auteurLivre=pAuteurLivre;
         prixLivre=pPrixLivre ;
        anneLivre=pAnneLivre;
         }   
        // GETTER
        public String getTitreLivre () {
        return titreLivre;
        }
         public String getGenreLivre () {
        return genreLivre;
        }
          public String getAuteurLivre () {
        return auteurLivre;
        }
           public int getPrixLivre () {
        return prixLivre;
        }
           public int getAnneLivre () {
        return anneLivre;
        }
           //SETTER
           public void setTitreLivre (String pTitreLivre)
           {
            titreLivre =pTitreLivre   ;
           }
           public void setGenreLivre (String pGenreLivre)
           {
            genreLivre =pGenreLivre   ;
           }
           public void setAuteurLivre (String pAuteurLivre)
           {
            auteurLivre=pAuteurLivre;
           }
             public void setPrixLivre (int pPrixLivre)
           {
            prixLivre=pPrixLivre ;
           }
              public void setAnneLivre (int pAnneLivre)
           {
            anneLivre=pAnneLivre;
           }
        }
    sinon comment aurait tu fait pour optimiser le code ?

    merci pour l'aide

  4. #4
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    Serna,

    Merci pour ton code.

    J'ai pu confirmé le bug. cela ne vient de ton utilisation de la vilaine classe Scanner.

    Il te suffit d'invoquer un nextLine() sur ton objet Scanner pour que cela fonctionne entre les 2 while comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while(reponse!=1 && reponse!=2);
    	         sc.nextLine();
            }while(reponse==1) ;
    En effet, quand tu invoques nextInt tu dois vider et faire un repositionnement si tu veux à nouveau lire une chaine. Et un nextLine dans le vide le fait automatiquement pour toi

    Marc
    Développeur Java
    Site Web

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    Merci autran pour tes explications.

    je met résolu ,mais pour mon apprentissage, pourquoi dis tu que la classe Scanner est vilaine ? y'a t'il une autre classe qui permettent d'entrer des
    données au clavier ( en restant dans l'optique débutant) .

  6. #6
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    non c'est de l'humour car elle pose souvent des problèmes aux débutants.
    bonne continuation
    marc,
    Développeur Java
    Site Web

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme dans une boucle do while
    Par oldscrout dans le forum Débuter
    Réponses: 2
    Dernier message: 30/12/2008, 17h02
  2. Probleme dans une boucle while pour remplir une JTable
    Par sky88 dans le forum Composants
    Réponses: 3
    Dernier message: 27/03/2008, 14h01
  3. Probleme dans une boucle
    Par Baya44 dans le forum VBA Access
    Réponses: 19
    Dernier message: 13/03/2007, 12h31
  4. Réponses: 2
    Dernier message: 06/02/2007, 15h05
  5. probleme de recordset dans une boucle do while
    Par Shoryu dans le forum ASP
    Réponses: 18
    Dernier message: 05/07/2004, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo