2017-12-30 15 views
0

So versuche ich eine Datei mit Namen in ihnen zu lesen, und ich möchte eine Liste mit allen Personen in der Datei erstellen . Die Textdatei heißt people.txt und ist wie folgt aufgebaut: Nachname/Nachname \ nStername/Nachname und so weiter. Die Datei sollte sich am richtigen Ort befinden.Warum bekomme ich eine java.util.NoSuchElementException, wenn ich versuche, den Scanner zu verwenden

Code:

public class UI { 
public static void main(String[] args) { 
    String naam; 
    ArrayList <Person> people = new ArrayList<>(); 
    Scanner sc = new Scanner("people.txt"); 
    while(sc.hasNextLine()) { 
     Scanner line = new Scanner(sc.nextLine()); 
     line.useDelimiter("/"); 
     String name = line.next(); 
     String surname= line.next(); 
     Person a = new Person(name, surname); 
     people.add(a); 
    } 
    System.out.println(people.size()); 
} 

Fehler:

Exception in thread "main" java.util.NoSuchElementException 
at java.util.Scanner.throwFor(Unknown Source) 
at java.util.Scanner.next(Unknown Source) 
at domain.UI.main(UI.java:14) 

Antwort

2

Das Problem ist hier:

Scanner sc = new Scanner("people.txt"); 

Dies macht keine neue Scanner Abrufen von Informationen aus einer Datei namens Menschen. txt. Es macht einen neuen Scanner, der buchstäblich den Text "people.txt" enthält. Da nur eine Zeile vorhanden ist, wird beim Versuch, die zweite Zeile zu erhalten, ein Fehler ausgegeben.

Klingt wie Sie den folgenden Konstruktor verwenden möchten:

Scanner(Path source)

Wo Sie das Interface Path Objekt in Class Scanner verwenden.

Path p1 = Paths.get(“people.tx”); 
Scanner sc = new Scanner(p1); 
2

Du liest gerade die Datei nicht, sondern der Text "people.txt" und hat somit line.useDelimiter("/"); keine Wirkung. Sie erhalten den Fehler, da String name = line.next(); den Text verbraucht "people.txt" und es gibt keinen Text links und String surname= line.next(); throwa Ausnahme

Sie müssen unter java.io.File wie verwenden:

Scanner sc = new Scanner(new File("pathToFile/people.txt")); 
Verwandte Themen