有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

扫描仪上的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)

共 (2) 个答案

  1. # 2 楼答案

    它可以是文件中没有“\n”字符的文本。hasNext()是真的,但nextLine()不存在

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