Problem beim Verstehen des Quellcodes

swany

Mitglied
Also es geht hier um ein Würfelspiel und ich verstehe die Klasse Brett nicht so ganz.

Der Code:

Java:
public Brett(int nFelder) {  			
        if (nFelder > 0) {
            felder = new Feld[nFelder];
            for (int i = 0; i < nFelder; i++) {
                felder[i] = new Feld(i);
            }
            felder[0].setStart(true);
            felder[nFelder - 1].setZiel(true);
        }
    }

    public Brett(String brettDateiname) {
        try {
            FileReader myFread = new FileReader(brettDateiname); 
            // orange: was sagen mir diese Zeilen? Also String myZeile gibt
            // das Objekt an den Aufrufer zurück 

            BufferedReader myLeser = new BufferedReader(myFread);
            String myZeil = myLeser.readLine(); /* rot: liest komplette zeile */
            breite = Integer.parseInt(myZeil); /* rot: liest die Breite aus */
            myZeil = myLeser.readLine();
            hoehe = Integer.parseInt(myZeil); /* rot: liest die Höhe aus */
            myZeil = myLeser.readLine();
            anzFelder = Integer.parseInt(myZeil); /* rot: liest die Felderanzahl aus */
            felder = new Feld[anzFelder];  // rot: erzeugt neues Feldobjekt
            if (anzFelder > 0) {
                // erzeugt so lange neue Felder bis die ausgelsene Zahl erreicht ist
                for (int i = 0; i < anzFelder; i++) {
                    felder[i] = new Feld(i);
                    myZeil = myLeser.readLine();
                    felder[i].setX(Integer.parseInt(myZeil));
                    myZeil = myLeser.readLine();
                    felder[i].setY(Integer.parseInt(myZeil));
                    myZeil = myLeser.readLine();
                    felder[i].setD(Integer.parseInt(myZeil));
                    System.out.println(felder[i].getNr()+" erzeugt");
                }
                felder[0].setStart(true);
                felder[anzFelder - 1].setZiel(true);
            }
        } catch (FileNotFoundException ex) { // orange: versteh ich nicht
            System.err.println("Datei nicht gefunden!");
        } catch (IOException exc) {
            System.err.println("Lesefehler!");
        }
    }

Also das rot geschriebene habe ich glaube ich verstanden und das orngene versteh ich nicht. Kann mir da jmd helfen? Wäre super Vielen dank schonmal
 
Zuletzt bearbeitet von einem Moderator:

Dario Linsky

Erfahrenes Mitglied
Hi,

Java:
catch(FileNotFoundException ex) { ... }
Das bedeutet, dass du den durchaus möglichen Fall berücksichtigst, wenn die Datei, die du öffnen willst, gar nicht vorhanden ist. Java zwingt dich zum Behandeln von Exceptions, damit dein Programm in solchen Fällen nicht einfach abstürzt.

Grüße, D.
 

swany

Mitglied
Danke!!

Und wofür brauche ich nen Bufferreader und Filereader?
Also soweit ich das jetzt verstanden habe besitzt die Klasse BufferedReader keine Methode, um die Daten in ein Array einzulesen. Dafür wäre dann der FileReader da...

stimmt das so? oder wofür braucht man die genau
 

wraimann

Mitglied
BufferedReader ist eine Klasse zum Auslesen von einem Stream (Muss ja nicht unbedingt eine Datei sein). FileReader öffnet den File Stream.

readline liest eine Zeile (also bis EON) und setzt den Dateizeiger in die nächste Zeile.

Befüllt wird mit einigen Zeilen ein Objekt vom Typ "FELD". Dies wird allerdings als Array erzeugt. D.h. du hast ein Array felder mit Objekten vom Typ "FELD".

Das Objekt Feld besteht nun aus den Funktionen:
setX
setY
... den Rest am Besten im Code nachschauen, irgendwo gibt es sicherlich eine Klasse Feld

Stehen in der Datei mehr Felder (wird angezeigt durch Zeile anzFelder) werden die restlichen auch ausgelesen und das Array gefüllt.