A voir également:
- Affichage variable hashset java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
1 réponse
Je ne pense pas que ce soit vraiment une mauvaise compréhension de l'objet HashSet mais plus la manière dont tu as fait ta méthode.
Tu dis "je veux afficher le nom de chaque composant", ce qui correspond bien au System.out.println(it.next()); qui doit faire l'affichage correctement.
Et ensuite tu dis "ça me retourne le nom du cocktail", ce qui est une chose tout à fait différente, et parfaitement normal puisque tu fais return "Composants: "+nom;
La question est donc qu'est-ce que dois faire cette méthode ? Afficher, ou renvoyer un résultat ?
Si au lieu de faire System.out.println(whisky_coca.affComposition()); tu fais directement whisky_coca.affComposition(); tu devrais avoir directement ce que tu veux.
Remarque : plutôt que d'utiliser tes propres méthodes d'affichage, il vaut mieux surcharger la méthode toString, c'est beaucoup plus propre !
Tu dis "je veux afficher le nom de chaque composant", ce qui correspond bien au System.out.println(it.next()); qui doit faire l'affichage correctement.
Et ensuite tu dis "ça me retourne le nom du cocktail", ce qui est une chose tout à fait différente, et parfaitement normal puisque tu fais return "Composants: "+nom;
La question est donc qu'est-ce que dois faire cette méthode ? Afficher, ou renvoyer un résultat ?
Si au lieu de faire System.out.println(whisky_coca.affComposition()); tu fais directement whisky_coca.affComposition(); tu devrais avoir directement ce que tu veux.
Remarque : plutôt que d'utiliser tes propres méthodes d'affichage, il vaut mieux surcharger la méthode toString, c'est beaucoup plus propre !
Cette méthode doit retourner une chaine avec les composants du cocktail (whisky et coca).
Quand je met directement whisky_coca.affComposition(); sans le System.out.println j'obtiens ceci: BoissonNonAlcoolisee@2a9931f5
BoissonAlcoolisee@525483cd et c'est là que je ne vois pas à quoi ça correspond. Je veux juste que whisky et coca s'affichent. Mais je ne vois pas comment faire :(
Redéfinis les méthodes de la classe Object autant que possible (toString, equals, hashCode...)
J'ai donc:
Et il me retourne bien Composants du whisky-coca: [Composants non alcoolisés: coca, Composants alcoolisé: whisky].
Mais admettons que dans une autre méthode je veuille retourner cette fois ci la quantité de chaque composant du cocktail:
Coca: 40ml, Whisky: 40ml
Je ne peux pas faire 2 toString (un pour le nom et un pour la quantité) et je ne peux pas tout mettre (quantité, nom ...) dans le même toString étant donné que j'ai une méthode pour chaque attribut. Donc comment je peux faire pour "cibler" les attributs de mon HashSet composition ?
Je serai tenté de faire un et un mais malheureusement ça ne fonctionne pas comme cela.
J'espère que je suis claire :$
Nul part tu ne te sers de it.next, c'est comme si tu ne le mettais pas :
L'affichage "[Composants non alcoolisés: coca, Composants alcoolisé: whisky]" vient tout simplement de la méthode composition.toString(), en aucun cas tu n'as toi même décomposé le hashSet.
Voici une autre méthode qte(), qui décompose le hashSet pour en extraire les données :
Remarque : ici qte() renvoit un String, ce qui peut poser un problème si la classe mère Boisson définit la méthode qte() comme renvoyant un double...
Cordialement