6.3

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

6.3
Was soll denn bei den gegebenen Testfällen in WarehouseTest.java herauskommen, wenn man alles richtig implementiert hat?

Das folgende Lagerhaus?

0033
00.2
1111

Ausgabe:

package placed
package placed
package placed
package could not be placed
package placed
package placed
xxxx
xx.x
xxxx

Frage:
Ich bekomme ein Ausrufe Zeichen beim hochladen, hat jemand eine Idee, was man machen soll (wenn man Rechnerübung vermeiden will)?


Aus WareHouseTest.java[code]
Package c = w.get(j, i);

for(int k=0; k<p.length; ++k){
if(p[k] == c){
f = (char)(‘0’ + k);
}
}

[/code]

Soll denk ich dafür sorgen, dass die Paketnr. geprintet wird, also im Bsp. 0,1,2 oder 3. Ich vermute dein Problem liegt dort ;). Ansonsten habe ich die gleiche Ausgabe, aber auch einen grünen Haken.


@bor1: Also ich hatte auch ewig einen gelben Haken (obwohl bei mir das richtige rauskam). Bei mir lag es daran, dass ich Hilfsfunktionen/variablen hatte, die nicht private waren. Sollten sie aber alle sein! Auch solltest du mal mehrere test cases hintereinander laufen lassen und gucken, ob es noch funktioniert, weil das war auch ein Problem bei mir. Beim ersten Durchlauf war alles gut, aber wenn ich einen zweiten dahinter geschalten habe, dann ist das ganze gecrasht, weil ein Arrayüberlauf bei mir passiert ist.
Vielleicht trifft ja was davon auf deinen Code zu, hoffe es hilft =)


Frage dazu: ich habe zwei public Setter-Methoden in Package eingebaut, um die private Koordinaten eines Pakets aus der Warehouse-Klasse heraus zu ändern. Ich brauch das genau einmal, nämlich um bei der unSet()-Methode, die Koordinaten des Pakets wieder auf -1 zu setzen.
Hier meine Frage: Ist das in Ordnung? Wenn nicht, wie kann ich das umgehen?


Die Methode Package.place(int x, int y) ist doch quasi ein Setter für die Koordinaten eines Packets. In dieser Methode kannst du ja einen Sonderfall für x == -1 && y == -1 einbauen.


Ich glaub in den Hinweisen stand irgendwo, dass wir keine public Methoden hinzufuegen duerfen (kann mich auch taeuschen), aber du sollst das gar nicht veraendern:

E: gerade gesehen, dass da nichts von unset() steht, aber ich wuerde davon ausgehen, dass hier dasselbe gilt.


Habe ich auch so angenommen. Geregelt wird das über die place oder findPlace Methoden.


Ich bedanke mich, alles nachvollziehbar.


Dazu hätte ich auch noch eine Frage:
In der Testklasse heißt es ja:

System.out.println(p[0].place(1, 0) ? "package placed" : "package could not be placed");

Insbesondere: place(1,0)
Wie kommt es dann, dass dieses Packet auf die Position (0,0) gesetzt werden soll (das Packet ist 2x2 groß)


Frage 2:
In deren Musterlösung (siehe Angabe, Ende) wird jeweils nur die links obere Koordinate als Packet angezeigt, soll das auch bei uns so sein?
Oder soll die Musterlösung dann doch wie folgt aussehen: [wie die farbigen Markierungen eben]
0033
00.2
1111


Weil ein späterer Aufruf lautet:

System.out.println(p[0].place(0, 0) ? "package placed" : "package could not be placed");

Ich denke, dass ich nicht zu viel verrate, wenn ich dir sagen, dass du die Referenz eines Packets in jeder Koordinate speicherst. Auf dem Aufgabenblatt steht zwar das Packet nur einmal als Name drin, allerdings ist das ganze mit Farbe hinterlegt. Interpretiere die Farbe einfach als Referenz :wink:


Vielen Dank! :smiley: