Aidez moi a remplir et afficher un tab d'objets

[Fermé]
Signaler
-
Messages postés
279
Date d'inscription
dimanche 9 novembre 2014
Statut
Membre
Dernière intervention
3 janvier 2017
-
bonjour , voila mon code mais il manque que l'affichage !

class livre {
 private int numL ;
 private String TitreL ;
 private int prixL ;
 public livre(int n , String t , int p ){
  this.numL=n;
        this.TitreL = t ; 
        this.prixL=p ; 
 }
}
import java.util.Scanner;


public class testlivre {
 public static void main(String[]args){
  Scanner sc = new Scanner(System.in);
  System.out.println("donner n");
  int n = sc.nextInt();
  
  
  
  
  
  livre[] t1 = new livre[n];
  
  
  for(int i=0 ; i<n;i++) {
  
   Scanner sc1 = new Scanner(System.in);
      System.out.println("donner num");
      int numL = sc1.nextInt();
  
      Scanner sc2 = new Scanner(System.in);
      System.out.println("donner titre ");
      String titreL = sc2.nextLine();
  
      Scanner sc3 = new Scanner(System.in);
      System.out.println("donner prix");
      int prixL = sc3.nextInt();
    
      t1[i] = new livre (numL,titreL,prixL )  ; 
  }
 
 for(int i=0 ; i<n;i++)
  System.out.println(t1[i]);
}
}


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Messages postés
279
Date d'inscription
dimanche 9 novembre 2014
Statut
Membre
Dernière intervention
3 janvier 2017
19
Ca t'affiche les adresses c'est ça ?

Tout simplement surchage la méthode toString() dans livre:

@Override
public String toString(){
return TitreL+" "+prixL;
}


Merci de ne pas mettre le premier caractère des attributs en majuscules(TitreL => titreL) :)
merci mais j'ai ne pas compris exactement , tu peut me facilite un peu !
Messages postés
279
Date d'inscription
dimanche 9 novembre 2014
Statut
Membre
Dernière intervention
3 janvier 2017
19
class livre {
private int numL ;
private String TitreL ;
private int prixL ;
public livre(int n , String t , int p ){
this.numL=n;
this.TitreL = t ;
this.prixL=p ;
}
@Override
public String toString(){
return TitreL+" "+prixL;
}
}

Tout simplement, comme ça lorsque tu fais System.out.println(t1[i]); plutôt que d'avoir l'adresse de l'objet d'affichée, le print passe par la méthode toString(), automatiquement, qui elle lui renvoie ce que tu veux(de type String), en l’occurrence TitreL+" "+prixL
merci bien je te comprends mais est ce qu'il ya une solution simple sans utiliser d'autres methodes ?
Messages postés
279
Date d'inscription
dimanche 9 novembre 2014
Statut
Membre
Dernière intervention
3 janvier 2017
19
Oui, il y en a plein d'autres, mais je dirais que surcharger la méthode toString() est limite obligatoire.
Comme tes attributs sont privés, tu ne peux qu'utiliser une méthode pour les afficher.