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

  FORUM HardWare.fr
  Programmation
  Java

  Boucle dans une méthode toString

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Boucle dans une méthode toString

n°2212393
activexkir​o
Posté le 02-12-2013 à 16:44:36  profilanswer
 

Bonjour à tous,
 
Je vous présente mon soucis, j'ai des TPs à finir pour dans quelques semaines et je bloque sur mon dernier exercice.
 
Pour ce qui est ce mon code précédent tout est fonctionnel il me permet d'afficher via une méthode toString des livres de la manière suivante:
 
Livre 3                               // c'est-à-dire que c'est le 3ème livre d'enregistré et Livre provient de mon getClass().getSimpleName()
{
    nom: ...                         // affiche à la place des "..." le nom du livre
    auteur: ...                      // affiche l'auteur du livre
}
 
Et maintenant je souhaite faire une nouvelle méthode toString qui me permet d'afficher, quelque soit le nombre de livre, le contenu de la "bibliothèque" de la façon suivante:
 
Livres: n livres                     // Livres et livres ne changent pas | le n représente le nombre total de livre
 
Livre 1                                // le 1 correspond au premier livre de la "bibliothèque"
{
    nom: ...                          //nom du premier livre
    auteur: ...
}
 
Livre 2
{
    nom: ...
    auteur: ...
}
 
Ainsi de suite
J'ai également un attribut index qui s'incrémente à chaque nouveau livre.  
Voici mon code:
---------------------
Attributs
---------------------
private String nom;
 private String auteur;
 private static int index;
           private int number;
 
---------------------
constructeurs
---------------------
public Livre (String nom, String auteur)
 {
  this.nom = nom;
  this.auteur = auteur;
  index++;
  this.number = index;
   
 }
 
public String getNom()
{
    return nom;
}
et pareil pour les deux autres
---------------------
methodes
---------------------
 
public String toString()
 {
  return getClass().getSimpleName()+getNumber()+" livres";
  for (int index = 0; index < number; index++)
  {
   System.out.println(getClass().getSimpleName();
   System.out.println(getNumber()+"\n{\n\tnom\t: "+getNom()+"\n\tauteur\t: "+getAuteur()+"\n\t" );
  }  
                       return ??
 }
 
Merci d'avance pour vos éventuelles réponses
 
Cordialement Activexkiro

mood
Publicité
Posté le 02-12-2013 à 16:44:36  profilanswer
 

n°2212400
willy le k​id
Posté le 02-12-2013 à 17:12:39  profilanswer
 

Remarque en passant : L'index doit être passé en paramètre du constructeur de Livre, pas incrémenté dans ce constructeur, puisque une instance de livre ne partage pas l'index avec les autres instances, est ce que tu me suis ?

n°2212401
activexkir​o
Posté le 02-12-2013 à 17:18:06  profilanswer
 

Je sais comment faire mais je vois pas concrètement ce que cela chance en faite.
Et puis on perd du coup l'incrémentation souhaité dans les questions précédentes.

n°2212408
willy le k​id
Posté le 02-12-2013 à 18:33:42  profilanswer
 

C'est la différence entre une conception propre et objet et une conception "je vais rendre mon devoir à l'arrache".
Par ailleurs la méthode toString liée à l'instance d'un livre est dédiée à retourner une description de l'instance, en surchargeant la méthode par défaut de la classe Object.  
la méthode toString d'une instance de livre se moque des autres instances participant au projet ou à l'appli,
n'a pas à les connaitre, ne doit pas les connaitre.
 
Par contre tu peux avoir un objet LivreCollection  
qui instancies les livres en passant l'index en paramètre
qui place (add) les livres dans une ArrayList de livre (attribut de cette classe)
et qui a une méthode toString.
 
Cette méthode toString :
- affiche le "Livres: n livres"
- puis boucle sur la ArrayList et appelles les méthodes toString de chaque livre.


Message édité par willy le kid le 02-12-2013 à 18:35:53
n°2212410
activexkir​o
Posté le 02-12-2013 à 18:40:45  profilanswer
 

Ok je comprend vaguement ce que vous me dites.
J'essai de visualiser mais j'ai un peu de mal, d'autant plus que nos tp sont censés être sur les cours (du moins jusque là ça toujours été le cas).
 
Or tout ce que vous me proposez avec les arraylist nous n'avons jamais vu.
 
Merci tout de même de vos réponses

n°2212420
willy le k​id
Posté le 02-12-2013 à 20:29:23  profilanswer
 

c'est le prof qui a indiqué "private static int index;" ?
 
Ma proposition, sans structure compliquée ni optimisation
 

Code :
  1. package tp;
  2. public class Livre {
  3.     private String nom;
  4.     private String auteur;
  5.     private int number;
  6.     public Livre (String nom, String auteur, int number)
  7.     {
  8.      this.nom = nom;
  9.      this.auteur = auteur;
  10.      this.number = number;
  11.     }
  12.    
  13.     public String toString(){
  14.      String sTemp = "Livre " + number + " { nom= " + nom + ", auteur=" + auteur +"}" ;
  15.      return sTemp;
  16.     }
  17. }


 

Code :
  1. package tp;
  2. public class LivreCollection {
  3. private Livre[] livreArray;
  4. public static void main(String[] args) {
  5.  LivreCollection livreCollection = new LivreCollection();
  6.  System.out.println(livreCollection.toString());
  7. }
  8. public LivreCollection(){
  9.  livreArray = new Livre[2];
  10.  livreArray[0] = new Livre("Victor Hugo", "Les Misérables", 1);
  11.  livreArray[1] = new Livre("Hergé", "Coke en Stock", 2);
  12. }
  13.     public String toString(){
  14.      String sTemp = "Livres : " + livreArray.length + "\n";
  15.      Livre lTemp;
  16.      for (int l=0 ; l < livreArray.length; l++){
  17.       lTemp= (Livre) livreArray[l];
  18.       sTemp += " " + lTemp.toString() + "\n";
  19.      }
  20.  return sTemp;
  21.     }
  22. }


 
Execute LivreCollection ->

Code :
  1. Livres : 2
  2. Livre 1 { nom= Victor Hugo, auteur=Les Misérables}
  3. Livre 2 { nom= Hergé, auteur=Coke en Stock}


Message édité par willy le kid le 02-12-2013 à 20:44:30
n°2212459
activexkir​o
Posté le 03-12-2013 à 12:06:59  profilanswer
 

Je te remercie Willy pour ton aide précieuse et ton temps !
 
Pour le static effectivement c'est le prof qui nous l'as demandé donc nous sommes en quelques sorte "obliger" de le faire.
 
Je suis en train de tester ton code sur le livreCollection pour le comprendre de A à Z sinon je ne vois pas l'intérêt de le copier.
 
Encore une fois merci pour ton aide.  
Cordialement acitvexkiro


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

  Boucle dans une méthode toString

 

Sujets relatifs
macro trop lente - double boucle do while[Noob] Appeler une méthode
[C=débutant] Boucle While[Python] Faire une boucle
[Noob] Quel outil ou méthode de programmation pour ce projet ???Boucle infini (VBA)
problème avec une boucle foreachMéthode de Runge-Kutta
Boucle FOR et tableauAjax formulaire dans une boucle
Plus de sujets relatifs à : Boucle dans une méthode toString


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