Java impression d'un tableau d'objets
Je sais qu'il y a beaucoup de pages à propos de cette question, mais je ne comprends pas dans mon cas.
J'ai besoin d'imprimer le tableau d'objets. Par exemple, j'ai un tableau d'objets qui détiennent des objets à partir de la "forme" de la classe. Dois-je appeler la méthode toString pour chaque objet du tableau, ou puis-je code de la méthode toString dans la liste d'objets à imprimer les variables d'instance? Si oui, comment dois-je faire?
public class Shape{
private String shapeName;
private int numSides;
public String toString(){
return shapeName + " has " + numSides + " sides.";
}
}
public class ObjectList{
private Object[] list = new Object[10];
private int numElement = 0;
public void add(Object next){
list[numElement] = next;
}
public String toString(){
//prints out the array of objects
//do I call the toString() method from the object?
//or do I print the instance variables? What am I printing?
//I'm guessing I do a for loop here
}
}
public class Driver{
public static void main(String[] args){
ObjectList list = new ObjectList();
Shape square = new Shape("square", 4);
Shape hex = new Shape("hexagon", 6);
list.add(square);
list.toString(); //prints out array of objects
}
Je vise pour imprimer cette:
square has 4 sides
hexagon has 6 sides
Si le tableau ne contient que
Ah oui j'ai oublié d'ajouter le
Shape
s, pourquoi ne pas faire un Shape[]
plutôt que Object[]
? Aussi votre add
méthode doit augmenter la valeur de numElement
.Ah oui j'ai oublié d'ajouter le
numElement++
, mais je voulais le rendre dynamique pour tous les objets, et pas seulement de la Forme[] classe.
OriginalL'auteur Denise Moran | 2015-04-15
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple pour ce faire est d'utiliser des Tableaux.toString:
Ce sera interne appelle la
toString
méthode de chaque élément de votre groupe.Donc de substituer
toString
méthode dans votreShape
classe et il devrait fonctionner correctement.À en ajouter d'autres, remplacer
toString
méthode dans votre classe où vous appelezArrays.toString
sur votre variablelist
:10
d'objets, que ceux qui ont été ajoutés.Je suppose que ce doit être géré automatiquement par des Tableaux de classe
Downvoter, s'il vous plaît commentaire, ce qui n'allait pas avec ma réponse
Merci!!!! C'est exactement la réponse.
J'ai peur que c'était moi, désolé. L'OP a spécifié que seuls les 2 formes ajoutées doivent être imprimés, alors que votre réponse imprime les 2 formes plus
null
8 fois.OriginalL'auteur Abubakkar
Vous pouvez faire cela avec soufflet de code, de créer de boucle dans la méthode toString pour imprimer un objet de forme.
OriginalL'auteur niks
Écrire un pour chaque instruction de toString() de l'Objet de la Liste et de créer une Chaîne de grande taille avec des '\n' personnages et de le retourner comme une Chaîne de caractères . Ou peut-être nom displayListElement() sera sémantiquement plus correct dans lequel vous pouvez simplement imprimer tous les Objets dans la liste .
OriginalL'auteur LuvElDuderino
En effet, vous devez appeler
toString
méthode pour chacun des objets que vous souhaitez imprimer et de se joindre à eux. Vous pouvez utiliserStringBuilder
pour contenir la chaîne-de-la décision comme suit:Noter que vous devez augmenter
numElements
(par exemplenumElements++
) pour chaqueadd
opération que ce pbabcdefp dit dans les commentaires. Aussi, vous pouvez utiliserArrayList
classe pour gérer la "croissance tableaux".OriginalL'auteur tkokasih