Aufgabe 3.4

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.

Aufgabe 3.4
Hi,
ich hänge an der Aufgabe ein bisschen:

Bei mir wird die x-Achse des Koordinatensystems nicht bis zum Ende gezeichnet, also ca. nur ein viertel der Länge.
Ich dachte, dass das vielleicht an der Größe des screen arrays liegen könnte, aber ich habe das eigentlich schon richtig angegeben mit width und height…dann habe ich das mittels zweier for schleifen mit leerzeichen befüllt.

Wo kann das Problem liegen?


oh ich habe das Problem gefunden, bei der Methode draw war x und y vertauscht…
sry


Hi,
Ich bin grade über einen “Widerspruch” in der Aufgabenstellung gestolpert…

Nachzulesen unter 3.4 a)
Nach dem Aufruf von newScreen(80,30) steht in screen also ein Array mit 80 Zeilen und 30 Spalten; wenn dieses Array mit drawScreen ausgegeben wird, so landet screen[0][0] links unten, screen[79][0] landet rechts unten, screen[0][29] landet links oben, und screen[79][29] landet rechts oben in der Ausgabe.

Laut dem ersten Satz ist das auszugebende Feld höher als breit, wenn man davon ausgeht das diese Zeilen wirklich Zeilen sind.
Da aber screen[79][0] = rechts unten gilt, sind in diesem Fall die Zeilen eigentlich Spalten und umgekehrt.

Find das ganze ein bisschen verwirrend… was meint ihr dazu?


Ja, ist Quatsch…
screen[29][0] ist unten rechts, screen[0][79] oben links, usw.


Hi,

auch ich habe mich etwas gewundert, das Array wird zwar mit 80 Zeilen und 30 Spalten initialisiert, aber dann beim Ausgeben wird das ganze umgedreht. Wenn du in dem Initialisierten ursprünglichen Array [0][0] suchst dann liegt das eignetlich oben links. Durch die Ausgabe, die da etwas herumdoktort, landet es aber unten links.


Ist aber ein anderes „Problem“, in der Aufgabenstellung sind zudem Zeilen und Spalten vertauscht, wie es MOV 0101 angemerkt hat.

btw: Ich verstehe nicht ganz, warum euch das „Umdrehen“ solche Probleme bereitet… Zeile 0 soll unten sein, da ich aber die Ausgabe von oben nach unten machen muss, muss ich mit der letzten Zeile anfangen. Recht viel mehr passiert da nicht…


Das ist in der Tat ein bisschen verwirrend. Allokiert man in Java ein 2-dimensionales Array gibt die erste Dimension die Anzahl an Zeilen und die zweite Dimension die Anzahl an Spalten an. Aus Sicht von Java hat das Array also 80 Zeilen und 30 Spalten. Da das Array allerdings wie ein kartesisches Koordinatensystem verwendet wird, stellt die erste Dimension die x-Achse (80) und zweite Dimension die y-Achse (30) da. Aus dieser Sicht sind Zeilen und Spalten vertauscht, das ergibt sich allerdings allein aus der Verwendung als Koordinatensystem. Hätte das Array 30 Zeilen und 80 Spalten wäre die erste Dimension nicht mehr die x-Koordinate und das würde wohl zu mehr Problemen führen.


Java kennt in mehrdimensionalen Arrays weder „Zeilen“ noch „Spalten“, es sind einfach mehrere Dimensionen.
Wie die Dimensionen jeweils interpretiert werden ist Aufgabe des Programmierers.


Ja, es war nur zum besseren Verständnis! Eben weil in der Aufgabenstellung Zeilen und Spalten erwähnt werden. Zudem vergleiche “Java ist auch eine Insel”. Da wird bei der Einführung von Arrays auch von Zeilen und Spalten gesprochen. Zum Einstieg genügt diese Art von Vorstellung. Wenn damit alle “Probleme” zerstreut sind, genügt mir das.