publicstaticvoidprintMyObjects(MyClass[] objectArray){for(MyClass object: objectArray){System.out.println(object.toString());// toString muss evtl. in der Klasse MyClass überschrieben werden}}
Nein.
Ich habe drei variablen(class x) und mehrere konstruktoren. Konstruktoren werden in main mehrmals aufgerufen. die drei variablen sind vom typ string int int. Die ausgabemethode hat keinen parameter:
Java:
//class Xstaticvoidausgabe(){}
Java:
// mainX a =newX();X b =newX("s",2);X c =newX("s",2,4);
b.anzeigen();// das hab ich hinbekommen, also nur b ausgebenX.ausgabe();// hier soll er a, b und c ausgben.
Ich nenne die drei werte einfach mal: inputString, inputIntEins, inputIntZwei.
anzumerken ist, dass ich davon ausgehe, dass du nicht übergebene(durch den Konstruktor als Parameter übergeben) Werte mit null und -1 initialisierst.
Was du mit liste meinst, weiß ich nicht, aber ich denke ich soll die instanzen alle statisch deklarieren. Das problem ist, wenn ich die statisch deklariere, dann werden diese instanzen in konstruktoren nicht benutzt. Sind aber sichtbar.
Ich muss die Instanzen in konstruktoren, in nicht statischen methoden und in statischen methoden benutzen.
Mit Liste meint er z.B. ArrayList oder LinkedList. Eben alles, was das Interface implementiert.
Generell musst du bei der Erstellung eines neuen Objektes im Konstruktor direkt das Objekt zu einer statischen Liste hinzufügen.
Und dann bei X.ausgabe() mit einer Schleife über die Liste gehen und diese Ausgeben.
Mit Liste meint er z.B. ArrayList oder LinkedList. Eben alles, was das Interface implementiert.
Generell musst du bei der Erstellung eines neuen Objektes im Konstruktor direkt das Objekt zu einer statischen Liste hinzufügen.
Und dann bei X.ausgabe() mit einer Schleife über die Liste gehen und diese Ausgeben.
Genau so ähnlich habe ich das im Kopf. Leider hab ich nie mit Listen gearbeitet.
Also ich muss die zwischen werte irgendwo speichern, dann mittels einer schleife ausgeben lassen. Es gibt doch bestimmt eine andere möglichkeit.
Wenn es für eine Hausaufgabe ist wäre unter umständen auch die Aufgabenstellung oder ein Coderahmen hilfreich Aus einem Kontext heraus kann man sowas leichter einschätzen als zu sagen "ich habe 3 instanzen von X und brauche die in Konstruktoren, statischen und nicht statischen Methoden und brauche noch sowas wie eine Ausgabe in Y die alle Instanzen aus X ausgibt"
Gruß
classRechteck{int height, width, x, y;Rechteck(){ x = y =1;}Rechteck(int height){this();this.height = height;}Rechteck(int height,int width){this(height);this.width = width;}staticvoidausgeben(){??}}
Java:
//main classRechteck r1 =newRechteck();Rechteck r2 =newRechteck(7);Rechteck r3 =newRechteck(7,8);//AusgabeRechteck.ausgeben();// hier möchte ich, dass alles ausgegeben wird, was in r1, r2 und r3 gespeichert wurde als System.out...
Ok, also wenn ich das richtig verstehe hast du die Klasse Rechteck
Im Programmverlauf erzeugst du Instanzen der Klasse, zu einen Zeitpunkt X rufst du auf der Klasse Rechteck .ausgeben(); auf. Diese Methode soll alle aktuellen Instanzen die vorhanden sind nacheinander ausgeben.
Dann bietet es sich an in der Klasse Rechteck eine statische List anzulegen die Rechteck-instanzen speichert.
Da deine Konstruktoren sowieso immer den parameterlosen Konstruktor aufrufen kannst du einfach als letzten Aufruf in diesem die gerade erzeugte instanz (this) zu der liste hinzufügen.
Bei der statischen Funktion ausgeben hast du Zugriff auf die Liste und kannst per for /for-each -Schleife über die Instanzen iterieren. Dann setzt du dir einfach aus den Werten der aktuellen Instanz einen String zusammen und gibst diesen aus.
Noch einfacher geht es wenn du in der Klasse Rechteck die von Object geerbte Methode toString überschreibst, dann kannst du nämlich das rechteck direkt in den println() Aufruf einsetzen.
Also das Problem hast sehr gut verstanden. Aber wie schon gesagt hab ich noch nie mit listen gearbeitet bzw ich darf diese nicht benutzen, weil noch nicht behandelt. Deswegen muss es einen anderen weg geben.
Dann bleibt eigentlich nur noch das Array als brauchbare Datenstruktur, das würde auch dem Ansatz von njans entsprechen.
Denn da du zur Laufzeit nicht weißt wieviele Instanzen erzeugt werden musst du natürlich die Möglichkeit bereitstellen mehrere zu speichern.
Mit etwas umkopieren kann man ein Array auch ohne viel Aufwand als dynamische Liste benutzen wenn man List selbst nicht benutzen darf.
Gruß
Dann bleibt eigentlich nur noch das Array als brauchbare Datenstruktur, das würde auch dem Ansatz von njans entsprechen.
Denn da du zur Laufzeit nicht weißt wieviele Instanzen erzeugt werden musst du natürlich die Möglichkeit bereitstellen mehrere zu speichern.
Mit etwas umkopieren kann man ein Array auch ohne viel Aufwand als dynamische Liste benutzen wenn man List selbst nicht benutzen darf.
Gruß
Alles richtig gemacht. :toll: Mit StringBuffer hats geklappt.
Danke an alle die mir geholfen haben. Besonderen dank an firephoenix, der mich auf diese idee gebracht hat, auch wenn diese für ein oder anderen nicht die richtige ist.