扫描仪上的java NoTouchElementException。下一行()
我不知道为什么我总是遇到这个异常,因为我只有在扫描程序有next()时才让它处理这些行。它将打印行,但随后抛出此异常。这是我的密码:
PagesCollection tester = new PagesCollection();
String fileName = (args.length > 0)? args[0] : "none";
Scanner scan = new Scanner(new FileInputStream(fileName), "UTF-8");
while (scan.hasNext()) {
String line = scan.nextLine();
line = line.replace("\n", "").replace("\r", "");
System.out.println(line);
Page newPage = new Page(line);
tester.addPage(newPage);
}
例外情况:
java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Scanner.java:1516)
at Webpage.countLines(Page.java:38) at Webpage.compareTo(Page.java:60)
at Webpage.compareTo(Page.java:14)
at java.util.Arrays.mergeSort(Arrays.java:1144)
at java.util.Arrays.sort(Arrays.java:1079)
at PagesCollection.addPage(PagesCollection.java:32)
at PagesCollection.main(PagesCollection.java:75)
# 1 楼答案
由于将
scan.nextLine
更改为scan.next
时会出现相同的错误,因此看起来您可能偶然发现了这个错误[1]# 2 楼答案
它可以是文件中没有“\n”字符的文本。hasNext()是真的,但nextLine()不存在
最好使用check hasNextLine()来确定下一行