Problem beim Verstehen des Quellcodes

  • Themenstarter Themenstarter swany
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

swany

Gast
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
 
Code:
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!"); 
} 
}
Kann ja kein Mensch lesen ohne Augenschmerzen zu bekommen
 
Code:
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!"); 
    } 
}

Sry einrücken vergessen 😳
 
Code:
public Brett(String brettDateiname) { 
    /*
     * Das ganze (ohne den Code dazwischen) nennt man Try-Catch-Block und es werden hier Fehler soz.
     * abgefangen. Zwischen Try und Catch wird im Code von dir eine Datei ausgelesen. Dabei kann es zu den
     * beiden Fehler FileNotFoundException und IOException kommen. Und damit das Programm nicht sinnlos
     * abstürzt fängt man die Fehler in den Catch-Teilen ab.
     */
    try { 
        ....
    } catch (FileNotFoundException ex) { // orange: versteh ich nicht 
        System.err.println("Datei nicht gefunden!"); 
    } catch (IOException exc) { 
        System.err.println("Lesefehler!"); 
    } 

/*
 * Hier wird ein Filereader angelegt mit dessen Hilfe eine Datei ausgelesen wird. Das muss halt sonst kann
 * man keine Datei lesen :)
 */

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); 

}

Kommentare sind im Code
 
Danke das hab ich soweit verstanden 😀

Und wozu braucht man diesen Bufferedreader und FileReader?

Also ich hab das bisher so verstanden:

Da der BufferedReader keine Methode besitzt, um Daten in ein Array einzulesen, braucht man den Filereader der diese dann ausliest. Stimmt das so???

Und wofür steht

Integer.parseInt in diesem Beispiel??


Viele dank soweit!!!!!!!!

Gruß
 
der Filereader bietet nur Methoden um einzelnen bytes oder ein ganzes array von bytes einzulesen... wär doch cool wenn ich einfach eine zeile einlesen könnte.. dass kann der BufferedReder, dem gibt man einfach einen Filreader und der macht das dan intern. Ich brauch nur readLine aufzurufen

Integer.parseInt

wandelt einen Text in eine Zahl um
aus String a = "22";
wird int b = 22;
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben