当我尝试使用扫描程序

时间:2017-12-30 17:13:43

标签: java file

所以我正在尝试读取其中包含名称的文件,并且我想要列出文件中所有人的列表。该文本文件名为people.txt,结构如下: 姓氏/姓氏\ nsurname /姓氏等。该文件应位于正确的位置。

代码:

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 个答案:

答案 0 :(得分:2)

问题在于:

Scanner

这不会从名为people.txt的文件中获取新的Scanner信息。它创建一个新的Path p1 = Paths.get(“people.tx”); Scanner sc = new Scanner(p1); 字面上包含文本&#34; people.txt&#34;。由于只有一行,因此当您尝试获取第二行时会抛出错误。

听起来你想使用以下构造函数:

Scanner(Path source)

您在Interface Path中使用Class Scanner对象的位置。

{{1}}

答案 1 :(得分:2)

您没有阅读该文件,而是文字"people.txt",因此line.useDelimiter("/");无效。您收到错误是因为String name = line.next();使用了文字"people.txt"并且没有留下任何文字而且String surname= line.next();会抛出异常

您需要使用java.io.File,如下所示:

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