Java Scanner

19Beat99

Mitglied
Hallo zusammen

Ich habe hier ein Programm geschrieben mit dem ich herausfinden will, wie viele Zeilen ein Dokument hat.
Ich verstehe nicht, warum es mit diesem Programm nicht funktioniert.
Code:
 package Test;

import java.awt.Point;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Random;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    
    
        File germList = new File("C:\\Users\\beatb\\eclipse-workspace\\Test\\src\\Test\\deutsch.txt");
        Scanner germWords;
    try {
        germWords = new Scanner(germList);
        int lengthArray = 0;
    while(germWords.hasNextLine()) {
        lengthArray++;
        System.out.println(lengthArray);
    }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
        }
    }

Ich habe auch schon eine Lösung gefunden. Wenn ich die while-Schleife so schreibe funktioniert es.

Code:
while(germWords.hasNextLine()) {
        lengthArray++;
        System.out.println(lengthArray);
        System.out.println(germWords.nextLine());
    }

Ich versteh jedoch nicht warum die erste Variante nicht funktioniert.

Ich bedanke mich schon einmal im Voraus für eure Hilfe.
 
Die Methode hasNextLine() in der Abbruchbedingung der Schleife schaut nur, ob es eine weitere Zeile gibt. Die gibt es und da du daran nichts änderst (z.B. mit nextLine() die Zeile lesen), wird das auch so bleiben.

Du "schaust" quasi immer auf die selbe "nächste" Zeile.
 
Wenn der Scanner nicht auf System.in geht solltest du ihn übrigens auch schließen. Verwende dafür das AutoClosable Interface des Scanners. Das sieht dann so aus:
Java:
public class Main {

    public static void main(String[] args) {    
        File germList = new File("C:\\Users\\beatb\\eclipse-workspace\\Test\\src\\Test\\deutsch.txt");
    try (Scanner germWords = new Scanner(germList)) { // HIER
        int lengthArray = 0;
    while(germWords.hasNextLine()) {
        lengthArray++;
        System.out.println(lengthArray);
    }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
        }
    }
 

Neue Themen


Zurück
Oben