2017-12-30 42 views
0

名前が付いたファイルを読み込もうとしていて、ファイル内の全員のリストを作成したい。テキストファイルはpeople.txtと呼ばれ、 surname/lastname \ nsurname/lastnameというように構成されています。ファイルは適切な場所に配置する必要があります。スキャナを使用しようとしているときにjava.util.NoSuchElementExceptionが発生する理由

コード:

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

がエラー:

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) 

答えて

2

問題はここにある:

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

これは新しいScannerは人と呼ばれるファイルから情報を得ることはありません。 TXT。文字通り "people.txt"というテキストを含む新しいScannerを作成します。 1行しかないので、2行目を取得しようとするとエラーになります。あなたはClass ScannerInterface Pathオブジェクトを使用

Scanner(Path source)

:あなたは次のコンストラクタを使用するように

が鳴ります。

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

はあなたではなく、テキスト"people.txt"、ファイルを読んでいないので、line.useDelimiter("/");は効果がありません。

Scanner sc = new Scanner(new File("pathToFile/people.txt")); 
String name = line.next();にテキストあなたは以下のよう java.io.Fileを使用する必要がある例外

throwa残っていないとString surname= line.next();テキスト"people.txt"を消費しているので、あなたがエラーを取得しています

関連する問題