首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未完成文件时出现Java扫描程序错误

未完成文件时出现Java扫描程序错误
EN

Stack Overflow用户
提问于 2018-03-29 04:16:32
回答 3查看 45关注 0票数 1

我正在尝试通过Scanner类读取java中的一个段落,并打印出行。然而,我发现了一个非常奇怪的问题。我得到以下错误:

代码语言:javascript
复制
Exception in thread "main" java.util.NoSuchElementException: No line found
        at java.base/java.util.Scanner.nextLine(Unknown Source)
        at Test.main(Test.java:10)

而之前的打印并不是文件的结尾。每次打印都会在特定行的第一个单词处停止,并且文件中还有5-6行。

我的代码:

代码语言:javascript
复制
try {
            Scanner scanner = new Scanner(new File(filename));
            for (int i = 1; i < 3801; i++){
                System.out.println(scanner.nextLine());
            }
            scanner.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
EN

回答 3

Stack Overflow用户

发布于 2018-03-29 04:21:37

使用以下内容来确定文件的结尾,而不是硬编码的整数。

代码语言:javascript
复制
while (scanner.hasNextLine()) {
    System.out.println(scanner.nextLine());
}
票数 2
EN

Stack Overflow用户

发布于 2018-03-29 04:28:29

您的scanner.nextLine()在一个for循环中。

建议您改用while循环。

while循环的条件应该是scanner.hasNextLine(),这基本上转换为“当扫描器在文件的前面有另一行时,在while循环内运行代码,否则停止while循环”

这样,如果扫描程序没有更多的行要读取,它就会简单地停止循环,并继续执行其余代码。

在for循环中,强制扫描器继续读取文件,即使它没有其他行可读。

代码应该是:

代码语言:javascript
复制
 public static void main(String[] args) throws FileNotFoundException {
      Scanner scanner = new Scanner(new File("read.txt"));
      while (scanner.hasNextLine()) {
             System.out.println(scanner.nextLine());
        }
      scanner.close();
}
票数 2
EN

Stack Overflow用户

发布于 2018-03-29 04:20:48

显然java被文件的编码搞糊涂了,这就是它崩溃的原因。在将"UTF-8"添加到scanner类中之后,它现在可以读取所有内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49543438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档