Scanner.nextLine()上的NoSuchElementException

时间:2016-02-23 16:01:00

标签: java file

我不知道为什么我一直得到这个例外,因为我只有我的扫描程序处理它的hasNext()行。它将打印行,但然后抛出此异常。这是我的代码:

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)

2 个答案:

答案 0 :(得分:2)

由于在将scan.nextLine更改为scan.next时出现同样的错误,看起来您可能偶然发现了这个错误[1]。

答案 1 :(得分:0)

它可能是文件中没有" \ n"字符。因此,hasNext()为true但nextLine()不存在。

最好使用check hasNextLine()来确定下一行。