Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2775 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Problème méthode

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Problème méthode

n°1952399
absot77
Posté le 22-12-2009 à 14:22:07  profilanswer
 


Bonjour, je suis en train de créer une méthode pour répondre à une question de mon prof (je suis étudiant) et j'ai un problème par rapport à la question, je ne sais pas quoi ajouter à mon objet..
 
Voilà la question: Écrire la méthode getCatégories(nbJouets : entier) : Collection de Catégories de la
classe Catalogue qui retourne une liste d'objet Catégorie ayant un nombre de jouets
au catalogue égal à son argument nbJouets.
 
Voici ce que j'ai sur la classe Catalogue:

Code :
  1. Classe Catalogue
  2. privé
  3. année : Chaîne
  4. lesJouets : Dictionnaire de <Jouet, Entier>
  5. // Contient pour chaque jouet du catalogue :
  6. // - en clé, l’objet de la classe Jouet
  7. // - en valeur, la quantité de ce jouet distribuée pour ce catalogue
  8. public
  9. Constructeur Catalogue (uneAnnée : Chaîne)
  10. Fonction GetAnnée ( ) : Chaîne
  11. Fonction QuantitéDistribuée () : Entier
  12. // Retourne la quantité totale de jouets distribués pour ce catalogue.
  13. Fonction StatCatég () : Dictionnaire de <Catégorie, Entier>
  14. // Retourne un dictionnaire contenant pour chaque catégorie de ce catalogue :
  15. // - en clé, l’objet de la classe Catégorie
  16. // - en valeur, la quantité de jouets distribués pour cette catégorie.
  17. Fin classe


 
 
 
Et voici le code que j'ai réalisé:

Code :
  1. public Vector<Categorie> getCategorie(int nbJouets)
  2. {
  3.  int nombreJouets = nbJouets;
  4.  Vector res = new Vector<Categorie>();
  5.  for (int i = 1; i != nombreJouets; i++)
  6.  {
  7.   res.add();
  8.  }
  9.  return res;
  10. }


 
 
Mon problème est donc que je ne sais pas trop quoi ajouter à mon vecteur.. :/

mood
Publicité
Posté le 22-12-2009 à 14:22:07  profilanswer
 

n°1952440
dsoft
Posté le 22-12-2009 à 15:42:56  profilanswer
 

Concrètement ton code est censé faire quoi ? Pour moi, d'après le sujet il faut que tu récupères les statistiques sur l'ensemble des catégories et que tu retournes les catégories pour lesquelles (quantité de jouets distribués == nbJouets).


---------------
www.blurk.fr
n°1952441
Bidem
Posté le 22-12-2009 à 15:45:12  profilanswer
 

Citation :

Fonction StatCatég () : Dictionnaire de <Catégorie, Entier>
// Retourne un dictionnaire contenant pour chaque catégorie de ce catalogue :
// - en clé, l’objet de la classe Catégorie
// - en valeur, la quantité de jouets distribués pour cette catégorie.


Je pense qu'il faut que tu mettes dans ton résultat, toutes les catégories issues de StatCatég() ayant nbJouets comme quantité

n°1952450
absot77
Posté le 22-12-2009 à 16:00:30  profilanswer
 

J'ai compris que la méthode getCategories() retourne une liste d'objet Categories avec dedans autant de jouets que le nombre donné en paramètre..  :/

 

J'ai du mal comprendre ce que l'on attend..

 

Comment ça toutes les catégories de StatCatég()?
On pourrait comparer un dictionnaire à un vecteur?

 

Donc il faut parcourir le dictionnaire que renvoie StatCatég() en prenant chaque catégorie?


Message édité par absot77 le 22-12-2009 à 17:10:48
n°1952486
Bidem
Posté le 22-12-2009 à 17:19:37  profilanswer
 

Citation :

Comment ça toutes les catégories de StatCatég()?


Citation :

toutes les catégories issues de StatCatég() ayant nbJouets comme quantité


 
tu parcours le dictionnaire et pour chaque Catégorie tu compares le paramètre nbJouets avec la "quantité de jouets distribués pour cette catégorie" : si egal, tu ajoutes la catégorie à ton résultat.

n°1952549
absot77
Posté le 22-12-2009 à 18:50:20  profilanswer
 

J'ai réalisé ce code, est-il bon?

Code :
  1. public ArrayList<Categorie> getCategorie(int nbJouets)
  2. {
  3.  int nombreJouets = nbJouets;
  4.  ArrayList<Categorie> res = new ArrayList<Categorie>();
  5.  for (int i=0; i!=lesJouets.length(); i++ )
  6.  {
  7.   if (nombreJouets == lesJouets.elementAt(i).getNombre())
  8.   {
  9.    res.add(lesJouets.elementAt(i).getJouet());
  10.   }
  11.  }
  12.  return res;
  13. }

n°1952552
cbeyls
Hail to the King, Baby
Posté le 22-12-2009 à 18:54:18  profilanswer
 

Je ne sais pas où est stockée la liste de catégories mais où qu'elle soit, tu devras la parcourir et comparer une certaine valeur d'une catégorie au paramètre.
 
En Java, un dictionnaire c'est une Map et une collection c'est une List.
 
Ton code là renvoie une liste de jouets, pas de catégories.

Message cité 1 fois
Message édité par cbeyls le 22-12-2009 à 18:55:50
n°1952558
absot77
Posté le 22-12-2009 à 19:02:08  profilanswer
 

Non, la méthode getCategorie() doit rendre une liste d'objet Catégorie.

n°1952579
Bidem
Posté le 22-12-2009 à 20:28:32  profilanswer
 

cbeyls a écrit :

Je ne sais pas où est stockée la liste de catégories mais où qu'elle soit, tu devras la parcourir et comparer une certaine valeur d'une catégorie au paramètre.

 

En Java, un dictionnaire c'est une Map et une collection c'est une List.

 

Ton code là renvoie une liste de jouets, pas de catégories.

 
absot77 a écrit :

Non, la méthode getCategorie() doit rendre une liste d'objet Catégorie.

 

C'est exactement ce qu'il dit, le code que tu nous a montré n'est pas bon car il retourne une liste de jouet et non de catégories.

 

A ce niveau c'est plus un problème de compréhension que de programmation que tu as.

 

1) récupérer le "dictionnaire" avec la fonction StatCatég(), cette fonction fait partie de l'énoncé donc elle doit être fournie

Code :
  1. Map<Categorie, Integer> dictionnaire = StatCatég();
 

2) parcourir les élément du dictionnaire (Cf. javadoc Iterator et Map.keySet())

 

3) pendant le parcourt, pour chaque catégorie, comparer son nombre de jouet avec le paramètre et ...


Message édité par Bidem le 22-12-2009 à 20:29:13
n°1952643
absot77
Posté le 23-12-2009 à 01:16:32  profilanswer
 

J'ai bien mal compromis ce que l'on attendais de moi, il faut que j'ajoute la catégorie et non le jouet.
 
Je peux aussi récupérer le dictionnaire avec un vector?
Je pensais faire:

Code :
  1. Vector<Categorie, Integer> dictionnaire = StatCatég();


 

mood
Publicité
Posté le 23-12-2009 à 01:16:32  profilanswer
 

n°1952644
Bidem
Posté le 23-12-2009 à 02:36:08  profilanswer
 

Là il faut que tu revois tes cours et l'api java
 
Vector et ArrayList sont des List
 
Ton dictionnaire est une Map qui contient des association clé + valeur (ici la clé est une instance de Jouet et la valeur un Integer)
 
Ce que tu dois donc parcourir c'est les clés de ta Map : Map.keySet()

n°1952757
absot77
Posté le 23-12-2009 à 13:11:06  profilanswer
 

Je n'ai jamais utilisé de dictionnaire donc voilà pourquoi j'ai du mal avec..  :/
 
Donc on récupère le dictionnaire avec une map, on le lit avec map.keySet() et dès que l'on trouve un jouet où le nombre est égal à celui passé en argument, on ajoute la catégorie dans un vector.
 
J'ai bien compris là?  :d

n°1952802
Bidem
Posté le 23-12-2009 à 15:55:13  profilanswer
 

Oui, c'est ça

n°1952880
cbeyls
Hail to the King, Baby
Posté le 23-12-2009 à 18:02:36  profilanswer
 

C'est ça mais il n'est pas question de jouets ici mais de catégories à parcourir, afin de trouver celles auxquelles appartiennent N jouets.
Et mettre tout ça dans une ArrayList et pas un Vector de préférence.

n°1952890
absot77
Posté le 23-12-2009 à 18:30:30  profilanswer
 

J'ai essayé d'utiliser Iterator et keySet() pour la première fois, dîtes-moi si ça doit ressembler à ça s'il vous plait:

Code :
  1. public Vector<Catégorie> getCategorie(int nbJouets)
  2. {
  3. Map<Catégorie, Integer> dictionnaire = StatCatég();
  4. int nombreJouets = nbJouets;
  5. Vector<Catégorie> res = new Vector<Catégorie>();
  6. Iterator i = dictionnaire.iterator();
  7. while (i.hasNext())
  8. {
  9.  if (nombreJouets == dictionnaire.keySet().elementAt(i))
  10.  {
  11.   res.add(dictionnaire.keySet().elementAt(i));
  12.  }
  13.  }
  14.  return res;
  15.  }

n°1952907
Bidem
Posté le 23-12-2009 à 19:49:40  profilanswer
 

Là, il est temps d'apprendre à manipuler les Collection :
http://java.sun.com/docs/books/tut [...] ction.html

n°1952908
absot77
Posté le 23-12-2009 à 19:51:07  profilanswer
 

C'est si grave que ça?  :/

n°1952935
cbeyls
Hail to the King, Baby
Posté le 23-12-2009 à 22:34:10  profilanswer
 

Fais une boucle for, ça sera plus simple (Java crée l'itérateur pour toi):
 

Code :
  1. for (Map.Entry<Catégorie, Integer> entry : dictionnaire.entrySet()) {
  2.   if (entry.getValue().intValue() == nombreJouets) {
  3.      res.add(entry.getKey());
  4.   }
  5. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Problème méthode

 

Sujets relatifs
Probléme avec les BDD[Java Swing] Problème avec drag'n'drop
Problème pour utiliser "MAX"Problème de validation W3C (script pris pour du HTML)
Aide applet java niveau débutantProblème de configuration MySQL sur Django
[Java Web Start]Problème de cache sur la méthode FileSystemManager.resjeu de la vie en java, nouveau probleme avec une methode
[java] probléme avec la methode setText() 
Plus de sujets relatifs à : [JAVA] Problème méthode


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR