Java drucken Sie ein array von Objekten
Ich weiß, es gibt eine Menge von Seiten über diese Frage, aber ich kann es nicht verstehen in meinem Fall.
Muss ich drucken Sie das array von Objekten. Zum Beispiel habe ich ein array von Objekten, die Objekte enthalten, die aus der "Form" - Klasse. Rufe ich die toString-Methode für jedes Objekt im array, oder muss ich den code der Methode toString in der ObjectList-drucken aus der Instanz-Variablen? Wenn ja, wie mache ich das?
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
}
Ich bin mit dem Ziel für Sie diese ausdrucken:
square has 4 sides
hexagon has 6 sides
- Wenn das array enthält nur
Shape
s, warum nicht machen es zu einemShape[]
eher alsObject[]
? Auch Ihreadd
Methode sollte den Wert erhöhennumElement
. - Ach ja, ich vergaß hinzuzufügen, die
numElement++
, aber ich wollte es dynamisch für alle Objekte und nicht nur die Form []. Klasse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg, dies zu tun ist die Verwendung von Arrays.toString:
Diese wird intern rufen Sie die
toString
- Methode jedes Elements des Arrays.Also einfach überschreiben
toString
Methode in IhrerShape
Klasse und es sollte funktionieren.Um weitere hinzufügen, überschreiben
toString
Methode in Ihrer Klasse, wo Sie anrufenArrays.toString
auf variablelist
:10
Objekte, dass nur diejenigen, die Hinzugefügt wurden.null
8 mal.Können Sie dies mit balgen code, stellen die for-Schleife in der toString-Methode drucken Sie jedes shape-Objekt.
Schreiben Sie eine for-each-Anweisung in toString() von Object-Liste und erstellen Sie einen großen String mit '\n' - Zeichen und als String zurückgeben . Oder vielleicht Namen displayListElement() werden semantisch korrekter, in dem Sie können einfach drucken Sie alle Objekte in der Liste .
In der Tat, sollten Sie rufen
toString
Methode für jedes der Objekte, die Sie drucken möchten, und fügen Sie Sie zusammen. Sie könnenStringBuilder
zu halten, die string-in-the-making, wie folgt:Beachten Sie, dass Sie brauchen, um zu erhöhen
numElements
(z.B.numElements++
) für jedeadd
Betrieb als das, was pbabcdefp sagte in den Kommentaren. Sie können auch verwendenArrayList
Klasse zu verwalten "wachsende arrays".