H8 SimpleFileParser

Ondori
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 28. Okt 2006 19:50

H8 SimpleFileParser

Beitrag von Ondori »

konnte heute keinen Tutor finden, deshalb trage ich mal alle meine Fragen hier zusammen ;)

1. Habe ich das richtig verstanden, dass nur SimpleFileParser das Interface RectangleDataAccess implementieren soll, es also keine weitere Klasse gibt, die dies tut (bzgl. Teilaufgabe 2, mal abgesehen von PublicTest)?

2. Erstellt die Prozedur getNextNumber() aus aufeinanderfolgenden Ziffern eine Zahl (also z.B. aus 1,0,1 die Zahl 101) ?
Und warum wird in dieser Zeile:
"result = result * 10 + ch - '0';"
Null (als char?) abgezogen?

3. Daraus ergibt sich die Frage: Kann man davon ausgehen, dass eine Reihe des Rechtecks jeweils in einer Ziffernfolge gespeichert ist (also ein Block aufeinanderfolgender Zahlen, die von den anderen durch Trennzeichen abgetrennt sind, ergeben eine Reihe)?

4.Und: Werden da allgemein chars und ints verglichen (s. z.B. isNumeric()) und warum geht das?

hoffe, dass es Menschen gibt, die sich bis hier durch meinen Text gequält haben ;)
und vielen Dank für eure Antworten
Zuletzt geändert von Ondori am 21. Dez 2006 13:11, insgesamt 1-mal geändert.

Mira`
Mausschubser
Mausschubser
Beiträge: 92
Registriert: 27. Okt 2006 20:41

Beitrag von Mira` »

Und noch eine allgemeine Frage zu der Hausübung:

Ist es eigentlich egal, ob der Robot von unten links anfängt und dann am Ende oben aufhört oder MUSS er von oben links anfangen und unten aufhören?

PS:

zu 1) In der Teilaufgabe 2 steht: "Erweitern sie SimpleFileParser so, dass das vorgegebene Interface RectangleDataAccess implementiert wird..."
Also würde ich deine Frage mit "Ja" beantworten.

Ondori
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 28. Okt 2006 19:50

Beitrag von Ondori »

also der BuilderRobot soll von unten links anfangen (bzw. wo er gerade steht), dann die erste zeile nach rechts legen, dann eine zeile weiter oben in die linke richtung usw.

wegen meiner ersten Frage: ich hätte jetzt spontan eine Klasse zum parsen genommen und eine für die Datenstruktur, deswegen frage ich ;)

Mira`
Mausschubser
Mausschubser
Beiträge: 92
Registriert: 27. Okt 2006 20:41

Beitrag von Mira` »

Und es ist auch egal, wo der Robot dann am Ende steht, oder? Weil auf dem kleinen Beispielbild auf dem Übungsblatt steht der Robot ja dann am Ende wieder an seinem Startpunkt.

Ondori
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 28. Okt 2006 19:50

Beitrag von Ondori »

ich denke das ist egal, das Bild bezieht sich auf Aufgabenteil 5, aber vielleicht sollte der Robot noch einen Schritt vom Muster weg machen oder so, dann isses schöner ;)

Benutzeravatar
kahler
Computerversteher
Computerversteher
Beiträge: 351
Registriert: 17. Apr 2004 11:24

Re: H8 SimpleFileParser

Beitrag von kahler »

Ondori hat geschrieben:...1. Habe ich das richtig verstanden, dass SimpleFileParser das Interface RectangleDataAccess implementieren soll, es also keine weitere Klasse gibt, die dies tut?...
Naja, es können durchaus mehrere Klassen das gleiche Interface implementieren. Das ist ja gerade der Sinn eines Interface, dass ich eine Schnittstelle definieren kann, die verschiedenste Klassen nutzen können.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GIT d- s:+ a-- C++++ UL++++$ P+>+++ L++ E--- W+++$ N+ o+ K? w O M V- PS+ PE++ Y+ PGP- t--- 5--- X-- R tv b DI++ D+ G e h r y?+
------END GEEK CODE BLOCK------

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Re: H8 SimpleFileParser

Beitrag von banshee »

Ondori hat geschrieben:Und warum wird in dieser Zeile:
"result = result * 10 + ch - '0';"
Null (als char?) abgezogen?
ich denke mal reader.read liest einen char ein (deshalb auch ch) und wenn man den in int casten will muss man den stopstring (also \0) entfernen und das macht man mit - '0'

citta
Mausschubser
Mausschubser
Beiträge: 96
Registriert: 7. Nov 2006 21:52

Re: H8 SimpleFileParser

Beitrag von citta »

Ondori hat geschrieben:konnte heute keinen Tutor finden, deshalb trage ich mal alle meine Fragen hier zusammen ;)

2. Erstellt die Prozedur getNextNumber() aus aufeinanderfolgenden Ziffern eine Zahl (also z.B. aus 1,0,1 die Zahl 101) ?
Und warum wird in dieser Zeile:
"result = result * 10 + ch - '0';"
Null (als char?) abgezogen?

3. Daraus ergibt sich die Frage: Kann man davon ausgehen, dass eine Reihe des Rechtecks jeweils in einer Ziffernfolge gespeichert ist (also ein Block aufeinanderfolgender Zahlen, die von den anderen durch Trennzeichen abgetrennt sind, ergeben eine Reihe)?

4.Und: Werden da allgemein chars und ints verglichen (s. z.B. isNumeric()) und warum geht das?

hoffe, dass es Menschen gibt, die sich bis hier durch meinen Text gequält haben ;)
und vielen Dank für eure Antworten
2. Bei result handelt es sich um ein int. Dein char wird implizit zu einer Zahl konvertiert. Wieso result * 10 ist ja klar... die vorherigen Zahlen sind eine Stelle höher, als die Zahl, die jetzt berechnet wird. Dann wird das Zeichen "ch" in eine integer-Zahl umgewandelt, jedoch handelt es sich z.B. bei '1' nicht um die Zahl 1, sondern die (ich denke mal) ASCII-Repräsentation von 1, also die 49. Dann wird -'0' subtrahiert, weil wir ja nicht den Wert der ASCII-Repräsentation haben wollen, sondern aus dem Zeichen "seine" zahl machen wollen. Wir rechnen also -48 (-'0') und bekommen dann unsere gewünschte 1.

3. Nein, soweit ich an der Implementierung erkennen kann, musst du nach x Zahlen sagen "Achtung, hier beginnt eine neue Reihe". Was x ist, steht ja ganz am Anfang der Datei.

4. siehe 2.

Mira`
Mausschubser
Mausschubser
Beiträge: 92
Registriert: 27. Okt 2006 20:41

Beitrag von Mira` »

Kann mir mal jmd sagen was in der test.txt das erste Zeichen Darstellen soll?

Also das was der Robot im Endeffekt malt.

x GDI 1

x ist die für mich gesuchte Variable 8)

Benutzeravatar
m0ep
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 189
Registriert: 5. Okt 2006 22:52
Wohnort: Bensheim
Kontaktdaten:

Beitrag von m0ep »

Gute Frage

Hab mich auch gefrag, was das darstellen soll Oo
Lasst mich Arzt, ich bin durch!

Ondori
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 28. Okt 2006 19:50

Beitrag von Ondori »

danke für eure erklärungen, vor allem das mit der ordnungszahl hat mir sehr geholfen

@kahler: sorry, hab mich vielleicht etwas ungeschickt ausgedrückt (mittlerweile versucht das zu beheben), was ich eigentlich wissen wollte:

ich habe zuerst an zwei klassen gedacht (eine zum parsen, eine für die datenstruktur), dann aber gesehen, dass das (jedenfalls für mich) durch die KarelTheBuilderApplication so nicht umsetzbar ist und wollte wissen, ob mir das jemand bestätigen kann...

kechler
Mausschubser
Mausschubser
Beiträge: 46
Registriert: 21. Nov 2004 22:33
Wohnort: Darmstadt

Beitrag von kechler »

Hallo, ich habe mal eine Frage zur Realisation der Datenstruktur:

Ich habe mir ein 2-dimensionales Array global in SimpleFileParser definiert, und fülle dies dann inkrementell in parseFile. Desweiteren kann ich erst in parseFile die Größe und Breite, also die ersten beiden Werte der Einlese-Datei, auslesen. Hier habe ich jetzt das Problem, dass mir erst jetzt die Info zur Vefügung steht, mit welchen Werten ich mein globales Array initialisieren muss.

Das Array habe ich global definiert, da die get-Methoden auch darauf zugreifen müssen.

Wie habt ihr dieses Problem gelöst, dass ihr die Größe und Breite, die ja nur lokal in der parseFile-Methode zur Vefügung steht global nutzen könnt??

Danke im voraus

Benutzeravatar
gobbledygook
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 11. Nov 2006 14:15

Beitrag von gobbledygook »

du definierst dein data array ohne ihn zu initialisieren

Code: Alles auswählen

class blah extends schwaetz {
  ...
  int[][] data;
  ...

  Blah() { ... }
  ... 
}
die initialisierung erfolgt dann nach dem lesen der dimensionen

Code: Alles auswählen

   int height = read();
   int width = read();
   data = new int[height][width];
die read-methode heisst zwar anders aber die frage sollte damit beantwortet sein.... oder nicht?




Ich mag keine Vegetarier.
Die essen meinem Essen das Essen weg.

kechler
Mausschubser
Mausschubser
Beiträge: 46
Registriert: 21. Nov 2004 22:33
Wohnort: Darmstadt

Beitrag von kechler »

Genau das wars, jetzt funktioniert alles wie gewünscht. Vielen Dank!

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

nur so am rande:
kechler hat geschrieben:Ich habe mir ein 2-dimensionales Array global in SimpleFileParser definiert
das ist immernoch lokal, globale variablen und methoden gibts in java nicht ;)

Antworten

Zurück zu „Archiv“