所以我正在尝试读取其中包含名称的文件,并且我想要列出文件中所有人的列表。该文本文件名为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)
答案 0 :(得分:2)
问题在于:
Scanner
这不会从名为people.txt的文件中获取新的Scanner
信息。它创建一个新的Path p1 = Paths.get(“people.tx”);
Scanner sc = new Scanner(p1);
字面上包含文本&#34; people.txt&#34;。由于只有一行,因此当您尝试获取第二行时会抛出错误。
听起来你想使用以下构造函数:
您在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"));