繁体   English   中英

尝试使用扫描仪时,为什么会出现java.util.NoSuchElementException

[英]Why do I get a java.util.NoSuchElementException, when I'm trying to use the scanner

因此,我尝试读取其中包含名称的文件,并且希望列出文件中所有人员的名单。 文本文件名为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)

问题在这里:

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

这不会使新的Scanner从名为people.txt的文件中获取信息。 它会创建一个新的Scanner ,它实际上包含文本“ people.txt”。 由于只有一行,因此当您尝试获取第二行时会引发错误。

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

扫描仪(路径来源)

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

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

您不是在阅读文件,而是在阅读文本"people.txt" ,因此是line.useDelimiter("/"); 没有效果。 由于String name = line.next();而导致出现错误String name = line.next(); 消耗文本"people.txt" ,没有文本,并且String surname= line.next(); 抛出异常

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM