2010-06-09 4 views
1

Mon problème est que j'ai une classe et qu'il y a une liste d'éléments d'une autre classe.Problème lors de l'affichage du contenu d'une classe en Java

public class Branch 
{ 
    private ArrayList<Player> players = new ArrayList<Player>(); 
    String brName; 
    public Branch() {} 
    public void setBr(String brName){this.brName = brName;} 
    public String getBr(){return brName;} 
    public ArrayList<Player> getPlayers() { return players; } 
    public void setPlayers(ArrayList<Player> players) { this.players =new ArrayList<Player>(players); } 
} 
public class Player 
{ 
    private String name; 
    private String pos; 
    private Integer salary; 
    private Integer number; 

    public Player(String name, String pos, Integer salary, Integer number) 
    { 
     this.name = name; 
     this.pos = pos; 
     this.salary = salary; 
     this.number = number; 
    } 

    public Player(){} 

    public String getName() { return name; } 
    public String getPos() { return pos; } 
    public Integer getSalary() { return salary; } 
    public Integer getNumber() { return number; } 

    public void setName(String name) { this.name = name; } 
    public void setPos(String pos) { this.pos = pos; } 
    public void setSalary(Integer salary) { this.salary = salary; } 
    public void setNumber(Integer number) { this.number = number; } 
} 

Mon problème est d'imprimer les joueurs d'une succursale avec leur nom, poste, salaire, numéro. Pour cela, j'essayé cela simplement:

String p1,p2; 
int a1,a2; 
p1 = input.readLine(); 
p2 = input.readLine(); 
a1 = Integer.parseInt(input.readLine()); 
a2 = Integer.parseInt(input.readLine()); 
players[0].setName(p1); 
players[0].setPos(p2); 
players[0].setSalary(a1); 
players[0].setNumber(a2); 
ptmp.add(players[0]); 

myBranch[0].setPlayers(ptmp); 

System.out.println(myBranch[0].brName + " " + myBranch[0].getPlayers()); 

j'ai écrit cela juste pour essayer comment afficher. J'ai créé un tableau de joueurs, et des branches de sorte qu'ils ont déjà défini. Le problème est getPlayers() ne me donne aucun résultat. Quelle est la façon de faire cela?

+0

Qu'est-ce que 'aucun résultat' - est-ce une liste vide ou obtenez-vous quelque chose de cryptique comme mentionné dans sa réponse? –

Répondre

1

Lorsque vous essayez de println ou concaténer un ArrayList (comme vous le faites quand vous faites " " + myBranch[0].getPlayers(), la méthode ArrayList.toString() est invoquée pour retourner une représentation de chaîne du contenu de la liste.

ArrayList.toString() retournera une chaîne contenant le résultat de toString() de chaque élément dans la liste (ce comportement est en fait défini dans l'une de ses classes mères AbstractCollection.

Depuis votre classe de joueur ne remplace pas la mise en œuvre toString() fournie par java.lang.Object, la sortie est susceptible somethi ng comme [email protected].

Donc, si vous voulez avoir une sortie pertinente lorsque vous appelez ArrayList.toString() sur une liste de Player objets, vous devez remplacer toString() en Player pour fournir la représentation de chaîne d'un Player vous voulez avoir retourné.

0

++ à ce que mat b dit. Une autre façon de le faire est de surcharger le toString on Branch pour faire défiler la liste des tableaux et retourner les informations sur chaque lecteur (peut-être appeler le toString que matt b recommande est défini dans la classe Player).

0

donner à la classe du joueur un toString() méthodes en tant que tels:

@Override 
public String toString() { 
    return "Player [name=" + name + ", number=" + number + ", pos=" + pos 
      + ", salary=" + salary + "]"; 
} 
0

Qu'est-ce que Noone a dit encore, est que, en utilisant un vecteur, de la manière que vous avez, vous a donné l'occasion d'agir simplement avec this.add() pour initialiser de nouveaux joueurs, cela entraîne bien sûr une copie en profondeur des joueurs, mais ils iront bien où ils sont dans leurs trous cubby, ils peuvent jouer à partir de là. C'est mieux que de faire un nouveau tableau chaque fois qu'un nouveau joueur est annoncé.

Questions connexes