/** * Write a description of class Buecherkeller here. * * @author (your name) * @version (a version number or a date) */ public class Buecherkeller { public Buch erstesBuch;
/** * Constructor for objects of class Buecherkeller */ public Buecherkeller() { erstesBuch = new Buch("0", 0,0);
}
public void neuesBuch(String titel, int jahr, int buchnummer){
Buch neuesBuch = new Buch(titel, jahr, buchnummer);
erstesBuch.nachfolger = neuesBuch;
} }
Erstelle ich weitere Bücher, verweißt das erste Buch immer auf das letzte erstellte. Die anderen sind dann weg O.o Ja mir ist klar warum aber ich weiß nicht wie ich mein eigentliches Ziel erreiche:
Möchte das eig so haben, dass das erste auf das zweite, das zweite auf das dritte, das dritte auf das vierte Buch etc verweißt.
Du kannst deine Liste in einer Schleife einfach durchgehen, bis du auf ein Buch ohne Nachfolger stößt. Ich habe keine Ahnung von Java, aber in C würde das in etwa so aussehen:
Code:
Buch diesesBuch = erstesBuch; /* gehe an den Anfang der Bücherliste */
while (diesesBuch.nachfolger) /* gehe die Liste so lange durch bis das letzte Buch (= kein Nachfolger) gefunden wurde */
diesesBuch = diesesBuch.nachfolger;
diesesBuch.nachfolger = neuesBuch; /* füge neues Buch an das Ende der Liste hinzu */
In Java nicht viel anders, nur dass man nen Zeiger nicht einfach so in nen Bool konvertieren kann :P Man müsse halt while ... != null schreiben.
Aber warum verweist ein Buch auf seinen Nachfolger? oO Das ist kein sehr schönes Design, da würde sich eine Linked-List viel mehr anbieten, in die man dann die Buch-Objekte einfügt.
Aber warum verweist ein Buch auf seinen Nachfolger? oO Das ist kein sehr schönes Design, da würde sich eine Linked-List viel mehr anbieten, in die man dann die Buch-Objekte einfügt.
Ist es nicht, weil die Bücher etwas davon wissen.
Eine Linked-List wäre eine Liste, in die man die Bücher einfügt und dieses ganze Nachfolgergedöns übernehmen Wrapper Klassen (oft Knoten genannt), sodass die eigene Klasse davon nichts wissen muss.
Hier hat er nun die Klasse Buch, welches aber gleichzeitig noch seinen Nachfolger kennt, was weder designtechnisch schön ist noch der Realität wirklich entspricht, was ja möglichst bei einem OO Design der Fall sein soll.
Buch diesesBuch = erstesBuch; /* gehe an den Anfang der Bücherliste */
while (diesesBuch.nachfolger) /* gehe die Liste so lange durch bis das letzte Buch (= kein Nachfolger) gefunden wurde */
diesesBuch = diesesBuch.nachfolger;
diesesBuch.nachfolger = neuesBuch; /* füge neues Buch an das Ende der Liste hinzu */
Die Liste ist eine rekursive Datenstruktur, deswegen wird man sie nicht iterativ durchlaufen.
Quote:
Aber warum verweist ein Buch auf seinen Nachfolger? oO Das ist kein sehr schönes Design
Bei ihm wird die Datenstruktur wahrscheinlich gerade eingeführt, da wird das üblicherweise so gelehrt. Später wird das weiter abstrahiert und dann über ein Interface die eigentlichen Daten von den "Knoten" getrennt.
B2T:
Du hast zwei Klassen. Die eine hat nur! eine Referenz auf das erste Element der Liste. Die andere Klasse sind die Elemente der Liste und haben jeweils eine Referenz nur! auf ihren Nachfolger. Willst du ein Element hinten in der Liste einfügen rennst du rekursiv durch und lässt dein letztes Element ein neues Element erstellen und setzt den als neuen Nachfolger fest. That's it.
EDIT:
Evtl. so:
Code:
public class Buecherkeller{
public Buch erstesBuch;
public Buecherkeller(){
erstesBuch = new Buch("0", 0,0);
}
public void neuesBuch(String titel, int jahr, int buchnummer){
Buch newBook = new Buch(titel, jahr, buchnummer);
if(erstesBuch != null){
erstesBuch.neuesBuch(newBook);
}
}
}
public class Buch{
private Buch nachfolger;
//...ctor etc. mal weggelassen
public void neuesBuch(Buch neu){
if(nachfolger == null){
nachfolger = neu;
}else{
nachfolger.neuesBuch(neu);
}
}
}
Habs ausm Kopf geschrieben, können fehler drinnen sein. Und mit Kompositum wärs natürlich noch schöner, aber das würde das Maß an der Stelle sprengen.
[JAVA Error] Could not create the java virtual machine 07/21/2013 - Technical Support - 10 Replies Schönen Abend!
Leider hat es sich aus einem unerfindlichen Grund ergeben, dass sobald ich die Minecraft.exe starten will die Errormeldung kommt.
Die Tips auf Minecraft.net habe ich schon ohne Erfolg befolgt.
Hoffe ihr könnt mir weiterhelfen...
Mein PC:
Finder-Reihe 06/24/2011 - AutoIt - 0 Replies Hi,
mein Freund hat die Finder-Reihe gecoded!
So könnt ihr zum Beispiel eure Mac-Adresse in 20 Sekunden ansehen, ohne lästige Sucherei!
Oder ihr erfahrt sofort ob eure IP umgeändert wurde nach dem Online-Banking
um euch vor Hacker zu schützen!!!
Virustotalscan von
DataFinder.exe|0/42
[Java] Could not create the Java virtual machine 06/22/2011 - Minecraft - 1 Replies hallo ihr minecraftler ^^
habe seit heute das problem das wenn ich minecraft starte original als auch cracked das diese fehlermeldung kommt:
Java virtual machine Launcher
Could not create the Java virtual machine