未完成文件的Java扫描程序错误

未完成文件的Java扫描程序错误,java,java.util.scanner,Java,Java.util.scanner,我试图通过Scanner类阅读java中的一段文字,并打印出这行文字。然而,我遇到了一个非常奇怪的问题。我得到以下错误: 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) 在此之前的打印不是文件的结尾

我试图通过Scanner类阅读java中的一段文字,并打印出这行文字。然而,我遇到了一个非常奇怪的问题。我得到以下错误:

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行

我的代码:

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();
        }
试试看{
扫描仪=新扫描仪(新文件(文件名));
对于(int i=1;i<3801;i++){
System.out.println(scanner.nextLine());
}
scanner.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}

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

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

使用以下命令确定文件结尾,而不是硬编码整数

while (scanner.hasNextLine()) {
    System.out.println(scanner.nextLine());
}

使用以下命令确定文件结尾,而不是硬编码整数

while (scanner.hasNextLine()) {
    System.out.println(scanner.nextLine());
}
您的scanner.nextLine()处于for循环中

建议改用while循环

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

这样,如果扫描器没有更多的行要读,它就会停止循环并继续执行其余的代码

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

代码应为:

 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();
}
您的scanner.nextLine()处于for循环中

建议改用while循环

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

这样,如果扫描器没有更多的行要读,它就会停止循环并继续执行其余的代码

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

代码应为:

 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();
}

我们能看看档案吗?如果是3801行,可能不是全部,但只是问题行,接下来会发生什么?问题是编码,在添加UTF-8后,它现在工作正常。我们能看到文件吗?如果是3801行,可能不是全部,但只是问题行,接下来会发生什么?问题是编码,在添加UTF-8之后,它现在工作正常。这就是我在将其更改为for循环之前使用的,这样我可以看到它是否抛出任何错误。无论如何,问题在于编码。在添加UTF-8作为编码器之后,一切都很好。这就是我在将其更改为for循环之前所使用的,这样我就可以查看它是否抛出任何错误。无论如何,问题在于编码。在添加UTF-8作为编码器后,一切正常。它是一个普通的txt文件吗?它是一个普通的txt文件吗?