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

Collection et Stream Java Discussion :

Problem avec HashMap


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut Problem avec HashMap
    Bonjour a tous,

    Voici mon problem, je dois afficher les resultats d'un etudiant. Pour cela je dois acceder l'etudiant dans le map et utiliser la method approprie dans la class etudiant.

    1/ la method pour la class etudiant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     /** 
        * Displays the name and set of marks of the receiver
        */
       public void displayMarks()
       {
          System.out.println("TMA marks are " + this.tmaMarks);
          System.out.println("Exam mark is " + this.getExamMark());
          System.out.println("Substitution score is " + this.getSubstitutionScore());
          System.out.println("Final OCAS is " + this.getFinalOCAS());
       }
    2/ mon code pour cet exercise:
    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
    
    /**
        * Constructor for objects of class TutorGroup
        */
       public TutorGroup()
       {
          super();
          this.students = new TreeMap<String,Student>();
        }
    
       /**
        * Adds a number of students to the tutorgroup/ La method ci-dessous est deja prete pour cet exercise, je n'ai rien a changer ici    */
       public void populate()
       {
          String [] nameArray = {"Rebecca", "Anne", "Kiran", "Lee", "Haruki", "Tony", "Hanif", "Dylan", "Katja", "Ana"};
          Integer [][] tmaScores = {{46, 75, 64, 0},{92, 89, 94, 85},
                                 {71, 80, 75, 80},{97, 95,80, 81},
                                 {55, 65, 60, 60},{96, 93, 0, 88},
                                 {69, 75, 64, 47},{80, 81, 92, 65},
                                 {85, 92, 0, 0},{83, 89, 90, 35}};
          Integer [] examScores = {37, 86, 65, 85, 48, 87, 55, 72, -1, 70};
          for (int count = 0; count < nameArray.length; count++)
          {
             Student aStudent = new Student(nameArray[count]);   
             aStudent.setTmaMarks(Arrays.asList(tmaScores[count])); 
             aStudent.setExamMark(examScores[count]);
             students.put(nameArray[count], aStudent);
          }      
       }
     
       /** 
        * Displays the names and marks for the students 
        * in the tutor group in the Display Pane/ La method ci-dessous line 3 est celle que je dois completer pour l'exercise
        */ 
       public void displayTutorGroup()
       {  
          Map<String, String> marks = new HashMap<String, String>();
          for (String name: this.students.keySet())      // line 1
          {
            System.out.println("Student " + name + ":"); // line 2
            marks.displayMarks(); // line 3
            System.out.println();
          }
       }
    Bien evidement il ne reconnais pas la method displayMarks(); Est-ce quelqu'un peut m'aider.

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
         Map<String, String> marks = new HashMap<String, String>();
          for (String name: this.students.keySet())      // line 1
          {
            System.out.println("Student " + name + ":"); // line 2
            marks.displayMarks(); // line 3
            System.out.println();
          }
    ici 'marks' est du type HashMap<String, String>, or ta fonction 'displayMarks' fait partie de la classe 'Student'. C'est donc logique que ça ne fonctionne pas.

    Tu devrais plutôt faire ta boucle for pour quelle te renvoie chaque entrée de ta HashMap, à saoir un couple (String, Student).
    Ce couple sera une instance de la classe Map.Entry<String, Student> et pour les récupérer, la fonction HashMap::entrySet() permettra de te renvoyer une collection de Map.Entry<String, Student> (plus exactement un Set<Map.Entry<String, Student>>).

    Tu feras donc le "System.out.println" sur le String (ie. la 'clef' de l'entrée) tandis que tu appelleras la fonction displayMarks sur l'instance de Student (ie. la 'valeur' de l'entrée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
          for (Map.Entry<String, Student> entry: this.students.entrySet())
          {
            String name = entry.getKey();
            Student student = entry.getValue();
     
            System.out.println("Student " + name + ":"); // line 2
            student .displayMarks(); // line 3
     
            System.out.println();
          }

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut Re: HashMap
    J'ai du mal avec Hashmap

    Quand je tappe la method tutor.displayTutorGroup() dans le display panel,



    tutor.displayTutorGroup();

    Il me donne student Tony. Comment est-ce que je peux choisir un autre etudiant. Je m'excuse je suis confus avec cette method, Map produit une key et une value, comment les acceder dans le display panel.

    Desole d'avance si ma question te shock, c'est juste que je melange tout

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut Re: Map
    Par example:

    TutorGroup tutor = new TutorGroup();
    tutor.displayTutorGroup(" ", "Rebecca");

    Si j'ai bien compris la value est le nom de l'etudiant, mais je ne vois pas pour la key.

  5. #5
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par cyrodil Voir le message
    tutor.displayTutorGroup(" ", "Rebecca");
    Dans l'exemple de code que tu nous as donné ci-dessus, la fonction displayTutorGroup ne prend pas d'arguments.

    Donc il va nous falloir plus de précisions.

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut Re: Map
    Mon code fonctionne, quand je tappe displayTutorGroup() dans le displaypane, voici le resultat:

    Final OCAS is -1

    Student Tony:
    TMA marks are [96, 93, 0, 88]
    Exam mark is 87
    Substitution score is -1
    Final OCAS is -1

    Je ne comprends pas comment le code result sur Tony et pas un autre etudiant, mais comment faire si je veux les resultats de "Rebecca" par example.

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

Discussions similaires

  1. Probleme d'utilisation avec Hashmap
    Par zouboumafou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 14/05/2010, 02h32
  2. [Velocity] Probleme avec HashMap
    Par Katachana dans le forum Documents
    Réponses: 2
    Dernier message: 02/07/2007, 15h33
  3. probleme avec Hashmap et LinkedBlockingQueue
    Par semaj_james dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 20/05/2007, 19h37
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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