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 :

Exécution semble pas correct et je ne vois pas pourquoi


Sujet :

Langage Java

  1. #1
    Membre régulier
    Homme Profil pro
    Analyste IP + Programmation
    Inscrit en
    Février 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste IP + Programmation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2016
    Messages : 59
    Points : 72
    Points
    72
    Par défaut Exécution semble pas correct et je ne vois pas pourquoi
    mise en contexte :

    Voici mon code :

    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
           System.out.println( "Combien d'étudiants y a-t-il dans le cours INF1120 ? " );
           int NbEtudiants = clavier.nextInt();
     
     
           EtudiantINF1120 [] listeDesEtudiantsINF1120 = new EtudiantINF1120 [NbEtudiants]; 
     
     
           for (int i=0; i<NbEtudiants; i++)
           {                                   
               String nom ;
               String programme; 
               byte cycle; 
               System.out.println("Prénom et nom de l'étudiant : ");
               nom = clavier.nextLine();
     
               System.out.println("Cycle de l'étudiant : ");
               cycle = clavier.nextByte();
     
               System.out.println("Programme de l'étudiant : ");
               programme = clavier.next();
    Je veux associer un prénom et nom (2 mots ou plus) , un chiffre pour le cycle et le nom du programme (1 mot)

    À exécution, j'ai un soucis :

    Combien d'étudiants y a-t-il dans le cours INF1120 ?
    1
    Prénom et nom de l'étudiant :
    Cycle de l'étudiant :

    Je vous met juste la partie que je n'arrive pas à déboguer...

    Pourquoi :

    les lignes suivantes :
    Prénom et nom de l'étudiant :
    Cycle de l'étudiant :

    S'affichent l'une après l'autre, car au final le programme skip une variable sur 3...

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Parce que nextByte et nextInt ne consomment pas la fin de ligne et que readLine lit tout ce qui se trouve entre la fin de lecture précédente et le prochain retour à la ligne compris. Pour reprendre ton exemple, pour le nom / prénom il utilise ce qui se trouve derrière le 1, a savoir rien.

    Tappe

    1 Etienne Dupont

    Et tu verras que l'étudiant a un nom. Si tu veux passer à la ligne suivante après un nextInt / nextByte / nextDouble etc, il faut faire un appel explicite à nextLine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
           System.out.println( "Combien d'étudiants y a-t-il dans le cours INF1120 ? " );
           int NbEtudiants = clavier.nextInt();
           clavier.nextLine();
     //...
               System.out.println("Prénom et nom de l'étudiant : ");
               nom = clavier.nextLine();
     
               System.out.println("Cycle de l'étudiant : ");
               cycle = clavier.nextByte();
               clavier.nextLine();
     
               System.out.println("Programme de l'étudiant : ");
               programme = clavier.nextLine();

  3. #3
    Membre régulier
    Homme Profil pro
    Analyste IP + Programmation
    Inscrit en
    Février 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste IP + Programmation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2016
    Messages : 59
    Points : 72
    Points
    72
    Par défaut
    Sérieusement, cette communauté est vraiment incroyable...

    Plus rapide que mon prof ou les chargés de cours ou qu'un cycliste du tour de France.

    Merci pour la réponse. J'avais déjà vue la notion de «clavier.nextLine();» pour vider le buffer du clavier après la saisie de donner, mais je ne savais pas que je devais l'utiliser aussi pour ce genre de situation.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/02/2012, 11h16
  2. Réponses: 0
    Dernier message: 04/02/2009, 11h14
  3. Je ne vois pas le container qui n'a pas de bouton
    Par rXpCH dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 03/07/2008, 16h32
  4. path ne semble pas correct
    Par tl44 dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 22/06/2008, 19h55
  5. [Free Pascal] Je ne vois pas l'exécution de mon algo
    Par Effendil dans le forum Free Pascal
    Réponses: 2
    Dernier message: 26/09/2007, 11h22

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