FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P3 BeginOfStudies

P3 BeginOfStudies 2003-10-31 15:19
skillz

Kann mir einer sagen was hier dran falsch ist?
Der Test läuft nicht.



public int compare(Object s, Object t) {

Date i = ((Student) s).getStudienbeginn();
Date j = ((Student) t).getStudienbeginn();

if (i.compareTo(j) == 0) {
return 0;
}

else { if (i.compareTo(j) < 0){
return -1;} else {
return 1; }

}

}

Re: P3 BeginOfStudies 2003-10-31 16:03
Popcorn
Seit Ewigkeiten kein Java mehr benutzt. Aber normalerweise gibt Eclipse doch immer irngedeine Fehlermeldung aus?

Re: P3 BeginOfStudies 2003-10-31 16:05
Da:Sourcerer
Mal eine Frage: Warum machst du diese Fallabfrage? Würde es nicht reichen, wenn du return i.compareTo(j); machen würdest?

Re: P3 BeginOfStudies 2003-10-31 16:09
Lümmel
Jetzt wo ich die Doku lese …

the value 0 if the argument Date is equal to this Date; a value less than 0 if this Date is before the Date argument; and a value greater than 0 if this Date is after the Date argument.
( http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html#compareTo(java.util.Date) )

sollte es einfach so gehen:


public int compare(Object s, Object t) { Date i = ((Student) s).getStudienbeginn(); Date j = ((Student) t).getStudienbeginn(); return i.compareTo(j); }

java.util.date.compareTo() liefert dir ja schon das Ergebnis wie Du es brauchst.

Re: P3 BeginOfStudies 2003-10-31 16:13
skillz
Ja schon , aber ich wollte halt dass er dann nicht zum Beispiel 49 ausgibt, sondern einfach 1 und statt -53 einfach -1…

Und wie soll man die PriorityQueue implementieren??

Zwei Klassen Node und PriorityQueue oder nur eine?

Und bei Node was verwendet man da? Das Interface?
Ich versteh das nicht.

Re: P3 BeginOfStudies 2003-10-31 16:13
Da:Sourcerer
Lümmel? Mein Beitrag vor deinem?

Re: P3 BeginOfStudies 2003-10-31 16:17
Lümmel
Lümmel? Mein Beitrag vor deinem?

Hmmmm ? Als ich angefangen habe meinen Beitrag zu formulieren und Doku gelesen habe gab es noch keinen Beitrag zu diesem Thema…

Re: P3 BeginOfStudies 2003-10-31 16:26
skillz
Ich habs so gemacht wie ihr sagt, aber es ist immer noch ein Fehler drin . keine Ahnung warum

Re: P3 BeginOfStudies 2003-10-31 16:27
Popcorn
Ja schon , aber ich wollte halt dass er dann nicht zum Beispiel 49 ausgibt, sondern einfach 1 und statt -53 einfach -1…
Gibt CompareTo nicht auch nur 0, 1 oder -1 aus?


Re: P3 BeginOfStudies 2003-10-31 16:30
Da:Sourcerer
Und wie soll man die PriorityQueue implementieren??

Zwei Klassen Node und PriorityQueue oder nur eine?

Und bei Node was verwendet man da? Das Interface?
Ich versteh das nicht.

Also so, wie ich das Verstehe, hält jedes Exemplar der Klasse Node eine Referenz auf ein Exemplar der Klasse Student.
Zudem gibt es eine Refernez auf das nächste Exemplar von Node. Damit bastelst du quasi deinen eigenen Iterator.

Ach ja: PriorityQueue sollte dann irgendwie noch eine Referenz auf das erste Node halten[img]http://www.fb18.de/gfx/6.gif[/img]

Re: P3 BeginOfStudies 2003-10-31 16:31
Da:Sourcerer
Ja schon , aber ich wollte halt dass er dann nicht zum Beispiel 49 ausgibt, sondern einfach 1 und statt -53 einfach -1…
Gibt CompareTo nicht auch nur 0, 1 oder -1 aus?

Nein, eben nicht[img]http://www.fb18.de/gfx/10.gif[/img]
compareTo() soll einen Wert kleiner 0, 0 oder einen Wert größer 0 ausgeben. Das kann natürlich 1, -1 und 0 sein[img]http://www.fb18.de/gfx/22.gif[/img]

Re: P3 BeginOfStudies 2003-10-31 16:32
Slater
Ich habs so gemacht wie ihr sagt, aber es ist immer noch ein Fehler drin . keine Ahnung warum
was ist denn der Fehler, compilermäßig ja wohl nichts,
also irgendeine assert-Operation?
vielleicht falschrum sortiert?
vollständiger Code?

Gibt CompareTo nicht auch nur 0, 1 oder -1 aus?

in diesem Fall wohl schon ;), in Date siehts so aus:

public int compareTo(Date anotherDate) { long thisTime = this.getTime(); long anotherTime = anotherDate.getTime(); return (thisTime < anotherTime ? -1 : (thisTime==anotherTime ? 0 : 1)); }

Re: P3 BeginOfStudies 2003-10-31 16:33
Lümmel
Ja schon , aber ich wollte halt dass er dann nicht zum Beispiel 49 ausgibt, sondern einfach 1 und statt -53 einfach -1…
Ist doch egal, da Du i.d.R. eh >0, <0 und == 0 unterscheidest.


Und wie soll man die PriorityQueue implementieren??

Zwei Klassen Node und PriorityQueue oder nur eine?

Und bei Node was verwendet man da? Das Interface?
Ich versteh das nicht.

Du mußt eine eigene Klasse Node implementieren. In dieser speicherst Du:

Einen Studenten (vom Typ Student aus Aufgabe 1)
Eine Referenz auf die nächste Node
Eine Referenz auf die vorige Node.

In der Klasse PriorityQueue implementierst Du die Schlange an sich (mit den in der Aufgabe angebeben Methoden). In der PriorityQueue speicherst Du dann am besten eine Referenz auf die erste Node.
Z.b. zum Sortieren mußt Du Dich von einer Node zur anderen "durchhangeln" (deswegen gibt es in der Node immer einen Verweis zum Nächsten bzw. vom Letzten)

Re: P3 BeginOfStudies 2003-10-31 16:35
skillz
Unglaublich, aber irgendwie lag es daran, dass ich beiden Studentenobjekten das gleiche Geburtsdatum Date-Objekt zugewiesen hatte.
Das kapier ich gar nicht warum das nicht gehen soll…

Re: P3 BeginOfStudies 2003-10-31 16:36
Da:Sourcerer
@Lümmel: Danke, das mit dem vorherigen Node habe ich doch glatt überlesen[img]http://www.fb18.de/gfx/22.gif[/img]

Re: P3 BeginOfStudies 2003-10-31 16:58
skillz
Helft mir doch, wie soll man Aufgabe 3 machen? Ich brauch einen Ansatz.

http://vsis-www.informatik.uni-hamburg.de/teaching/ws-03.04/p3/a1.phtml

Re: P3 BeginOfStudies 2003-10-31 17:09
Slater
was verstehst du denn nicht?
Ansatz: Node basteln, danach die Queue

Re: P3 BeginOfStudies 2003-10-31 17:18
Anonymer User
hmmm…
wie realisiere ich denn die 'links' zu den anderen nodes?
habe ich etwa nicht genug aufgepasst in P2?
der Rest muesste einfach sein… hat mal jemand lust an einem open-source project zwecks aufgabenloesen? :)
- VideoSven

Re: P3 BeginOfStudies 2003-10-31 17:18
skillz
Soll man das Interface Node implementieren oder wie baut man die Node?

Re: P3 BeginOfStudies 2003-10-31 17:20
Da:Sourcerer
Ich würde mal sagen, du baust eine Klasse Node, so wie in der Aufgabe beschrieben[img]http://www.fb18.de/gfx/23.gif[/img]

Re: P3 BeginOfStudies 2003-10-31 17:21
VideoSven
ungefaehr so: ???

public class Node
{
private object container;
// private linkvor… hier die referenzen realisieren
// und die ueblichen set und get-methoden
}

Re: P3 BeginOfStudies 2003-10-31 17:25
Zaphod
hat mal jemand lust an einem open-source project zwecks aufgabenloesen? :)

Wenn ihr dabei erwischt werdet (und ihr werdet erwischt werden), dannb kriegen alle Teilnehmer des Projekts keinen Schein. Überlegt es euch also [img]http://www.fb18.de/gfx/25.gif[/img]

Bewährt hat sich ein CVS für die eigene Arbeitsgruppe kombiniert mit ICQ.

Re: P3 BeginOfStudies 2003-10-31 17:26
skillz
Na das hat er natürlich nicht erst gemeint, dashalb das smilie

Re: P3 BeginOfStudies 2003-10-31 17:30
Slater
ungefaehr so: ???

public class Node
{
private object container;
// private linkvor… hier die referenzen realisieren
// und die ueblichen set und get-methoden
}
ungefähr schon ja


Soll man das Interface Node implementieren oder wie baut man die Node?
falls du das Interface org.w3c.dom.Node meinst:
nein das hat nix damit zu tun,
wie man baut: so wie VideoSeven

Re: P3 BeginOfStudies 2003-10-31 17:37
skillz
Du mußt eine eigene Klasse Node implementieren. In dieser speicherst Du:

Einen Studenten (vom Typ Student aus Aufgabe 1)
Eine Referenz auf die nächste Node
Eine Referenz auf die vorige Node.


Nur einen Studenten??

Re: P3 BeginOfStudies 2003-10-31 17:42
Slater
steht eigentlich irgendwo in der Aufgabe das es um Studenten als Elemente geht? [img]http://www.fb18.de/gfx/22.gif[/img]

aber sonst klar nur einen,
wenn du einen neuen richtig einordnen willst dann natürlich in der Kette zwischen 2 alten

Re: P3 BeginOfStudies 2003-10-31 17:47
skillz
Was ich meine ist, ob jetzt Node nur genau einen Studenten enthält.

getPredessor holt sich dann ja die vorgänger node mit einem Studenten usw. oder?

mein bestimmter node muss für diese get-Methoden doch auf die Priority Queue zugreifen richtig?

Re: P3 BeginOfStudies 2003-10-31 17:58
Lümmel
Was ich meine ist, ob jetzt Node nur genau einen Studenten enthält.
Ja

getPredessor holt sich dann ja die vorgänger node mit einem Studenten usw. oder?

mein bestimmter node muss für diese get-Methoden doch auf die Priority Queue zugreifen richtig?

Nein… deine Node ist quasi ein statisches Object ohne eigene Methoden (naja ok… eventuell mit eigenen set und get Methoden). Die gesamte Funktionalität für die Schlange steckt im Queue und nicht im Node!

Re: P3 BeginOfStudies 2003-10-31 18:13
Slater
mein bestimmter node muss für diese get-Methoden doch auf die Priority Queue zugreifen richtig?
ne auf den Link auf vorherigen Node, der ja im Node vorhanden sein soll,

dagegen muss die Queue auf den Node zugreifen,
wenn diese den Vorgänger bestimmen möchte

Re: P3 BeginOfStudies 2003-10-31 18:37
skillz
eine Frage hab ich noch:
Wie kann ich den die referenzen setzen. worauf denn?
Ich weiss doch gar nicht wer vorgänger und so ist.

Re: P3 BeginOfStudies 2003-10-31 19:09
Da:Sourcerer
Wenn du's nicht weisst, ist es halt erstmal null.

Re: P3 BeginOfStudies 2003-10-31 20:12
VideoSven
Kann mir mal nicht jemand nen tipp geben fuer die 'links' die auf die andern nodes zeigen? in pascal wuerde ich das mit pointern machen, aber in java? fuer nen _echten_ tipp waere ich echt dankbar (Denkblockade) und diese dummen flames koennt ihr euch echt sparen (oder ist dies das orakel von delphi?)

Re: P3 BeginOfStudies 2003-10-31 20:22
Da:Sourcerer
Hm, in meiner letzten P3-Übung wurde das eigentlich gesagt…

Referenzen auf Objekte erstellst du durch Zuweisung. Also:
public Node(Node nextNode,...) { _nextNode = nextNode; . . . }
Ich hoffe, damit habe ich in den scharfen Augen der P3-Ü Leiter nicht zuviel verraten[img]http://www.fb18.de/gfx/22.gif[/img]

Re: P3 BeginOfStudies 2003-10-31 20:27
Slater
ich glaube es geht eher um die Art der Speicherung

da gibts doch nur eine Art in Java, eine Referenz halt:
Node _nextNode = null;

und wer flamed hier?

null ist halt der Standardwert in Java

Re: P3 BeginOfStudies 2003-10-31 20:29
Da:Sourcerer
So, wie ich ihn verstanden habe, ging's ihm eher darum, wie die Nodes mit einander verkettet sind bzw. Referenzen aufeinander halten…

Re: P3 BeginOfStudies 2003-10-31 21:24
skillz
ich dachte mir folgendes:

die node kriegt folgende Parameter übergeben: PredessorNode, SuccessorNode, aber auch einen Studenten oder?

Weil wie kriegt man sonst einen Studenten in die Node rein?

Re: P3 BeginOfStudies 2003-10-31 21:40
VideoSven
Danke, Da:Sourcerer
Hat mir geholfen… muss jetzt nur noch das comparatorproblem loesen… und ne schleife :)

Re: P3 BeginOfStudies 2003-10-31 22:04
MoKrates
hat mal jemand lust an einem open-source project zwecks aufgabenloesen? :)

Wenn ihr dabei erwischt werdet (und ihr werdet erwischt werden), dannb kriegen alle Teilnehmer des Projekts keinen Schein. Überlegt es euch also [img]http://www.fb18.de/gfx/25.gif[/img]

Bewährt hat sich ein CVS für die eigene Arbeitsgruppe kombiniert mit ICQ.

Die Zeiten sind vorangeschritten. Heute kommt noch TeamSpeak dazu :)

MoKrates

Re: P3 BeginOfStudies 2003-10-31 22:32
Slater
die node kriegt folgende Parameter übergeben: PredessorNode, SuccessorNode, aber auch einen Studenten oder?

Weil wie kriegt man sonst einen Studenten in die Node rein?
ja kannst schon so machen,
schadet natürlich auch nicht erst mal einen leeren Node zu erstellen und dann eine
setStudent(studentFuerDiesenNode);
Operation auszuführen,
die Referenzen auf Vorgänger und Nachfolger musst du auf jeden Fall später noch modifizieren können, wenn du einfügst und löschst,
aber das siest man dann ja alles wenn man soweit ist,
das Rad muss sich nicht von Anfang an drehen ;)

Re: P3 BeginOfStudies 2003-11-01 08:39
skillz
Ja, danke jetzt weiss ich erstmal alles!

Re: P3 BeginOfStudies 2003-11-01 14:03
Anonymer User
Bei den Exceptions steig ich nich ganz durch… Die Test-Klasse fuer den PriorityQueue beschwert sich beim Aufruf von remove und getHeadElement das die IllegalAccessException nich gehandelt wird.Muss ich jetze jedesma wenn ich remove aufrufen will da extra try und catch drumsetzen, oder wie? Kann das denn sinn der sache sein?
Und warum beschwert er sich nich bei den Methoden wo NullPointerExceptions und IllegalArgumentExceptions geschmissen werden?

Re: P3 BeginOfStudies 2003-11-01 14:58
Slater
es gibt halt Exceptions und andere Exceptions ;),

die einfachen (alle die von RuntimeException abgeleitet werden)
brauchen nicht abgefangen zu werden, damit man nicht etwa bei jedem
Arrayzugriff try-catch schreiben muss..

http://www.dpunkt.de/java/Die_Sprache_Java/Exceptions/12.html

wenn remove() so böse ist und das verlangt, dann musst du da wohl durch

Re: P3 BeginOfStudies 2003-11-01 15:16
Anonymer User
so muesste es doch laufen, oder?
- mit bitte um antwort…

public class Node { // zensiert, bitte keine Lösungen posten, danke }

Re: P3 BeginOfStudies 2003-11-01 15:20
Slater
jaja kommt schon hin,
aber bitte nix komplettes zu aktuellen Übungen mehr posten

Re: P3 BeginOfStudies 2003-11-02 13:20
Da:Sourcerer
Ja schon , aber ich wollte halt dass er dann nicht zum Beispiel 49 ausgibt, sondern einfach 1 und statt -53 einfach -1…

Seeehr spät, aber was mir eben noch dazu eingefallen ist: Dafür könnte mand das Ergebnis von compareTo() doch einfach durch die Vorzeichenfunktion jagen, oder?