Verstehe verschieden Scanner und hasNext() nicht ganz

ZH1896ZH

Mitglied
Ich verstehe nicht ganz was in der While-Schleife genau passiert.
Könnte mir(java-freshman) jemand Schritt für Schritt erklären, was da genau passiert?
Ich wäre echt dankbar...


(Die angehängte Text-Datei sieht so aus:
Zeit;Mon;Die;Mit;Don;Fre;Morgen;Frei;ReqEng;Frei;Java;WI;Mittag;guete;guete;guete;guete;guete;NachMi;IMan;WKomm;Frei;Frei;Math😉

Java:
package ch8;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Timetable {

    public static void main(String[] args) throws FileNotFoundException {

        /**
         * Semster-Stundenplan WI HS19 Uhrzeit = Zeilen (Morgen, Mittag, Nachmittag +
         * Uhrzeit 0/0) --> 4 Zeilen Wochentage = Spalten (+ 1 Spalte Bezeichner
         * Uhrzeit) -> 6 Spalten
         */

        final int MAX_ROW = 4;
        final int MAX_COL = 6;
        final String URL = "C:\\Users\\robin\\OneDrive\\surfaceDesktop\\timetableHS19.txt";
        String[][] timetable = new String[MAX_ROW][MAX_COL];

        Scanner fileScan = new Scanner(new File(URL));
        

        while (fileScan.hasNext()) {
            String line = fileScan.nextLine();
            Scanner lineScan = new Scanner(line);
            lineScan.useDelimiter(";");
            for (int row = 0; row < timetable.length; row++) {
                for (int col = 0; col < timetable[row].length; col++) {
                    timetable[row][col] = lineScan.next();
                }
            }
        }

        for (int row = 0; row < timetable.length; row++) {
            for (int col = 0; col < timetable[row].length; col++) {
                System.out.print(timetable[row][col]+"\t");
            }
            System.out.println();
        }

    }

}
 
Java:
        while (fileScan.hasNext()) {  // so lange fileScan weitere Token zur Verfügung stellen kann, wiederhole
            String line = fileScan.nextLine();  // lies eine Zeile ein und speichere diese in Variable line
            Scanner lineScan = new Scanner(line);  // erzeuge einen neuen Scanner, der seine Daten aus line bezieht
            lineScan.useDelimiter(";");  // der Scanner soll als Trennzeichen für die Ermittlung der Token ein Semikolon verwenden
            for (int row = 0; row < timetable.length; row++) { // für jede Zeile aus timetable, wiederhole...
                for (int col = 0; col < timetable[row].length; col++) { // für jede Spalte der aktuellen Zeile wiederhole...
                    timetable[row][col] = lineScan.next();  // lies das nächste Token ein und lege das Ergebnis in timetable an der aktuellen Zeile/Spalte ab.
                }
            }
        }
 
Hallo Euler, es wird ein Semesterstudenplan für das Wintersemester in Form einer Tabelle (String[][] timetable) angelegt.

PS. pass zu dieser Jahreszeit beim Spazierengehen auf die Brücken auf, diese könnten rutschig sein. 😀
 

Zurück
Oben