用Java扫描文本文件

用Java扫描文本文件,java,java.util.scanner,Java,Java.util.scanner,其目的是从.txt文件打印出名称列表。我使用的代码如下 import java.util.ArrayList; import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; public class FileScanner3 { public static void main(String args []) throws FileNotFoundException {

其目的是从.txt文件打印出名称列表。我使用的代码如下

import java.util.ArrayList;

import java.util.Scanner;

import java.io.File;

import java.io.FileNotFoundException;


public class FileScanner3 {

public static void main(String args []) throws FileNotFoundException {

    ArrayList<String> names = new ArrayList<String>();
    String inName;

    //Setup a scanner to read from a text file
    Scanner in = new Scanner(new File("namefile.txt").getAbsoluteFile());

    while (in.hasNextLine()) {
        inName = in.next();     
        //Use next() to read string
        names.add(inName);
    }

    //Tidy up by closing files
    in.close();

    //Print names ArrayList
    for(int i =0; i<names.size(); i++) {
        System.out.println((i + 1) + "\t" + names.get(i));
    }
}
}
如果有人能告诉我出了什么问题,那就太好了


编辑:拼写

如果没有文本文件,很难猜测,但我想在文件末尾有一个空行。您可以通过将内部循环更改为

 while (in.hasNext()) {
        inName = in.next();     
        //Use next() to read string
        names.add(inName);
 }

我希望这会有帮助。

你能发布文件的内容吗?:Throws:NoSuchElementException-如果扫描器上没有可用的令牌,但在读取文档时,如果文件以空格和行尾结尾,你似乎会得到这样的结果。将有一行(因此
hasNextLine
返回true),但没有令牌(因此
next
将失败)。文件内容如下:Jack Ben Ryan Sam Ted Bill Simon Andrew就是这样。他们都在不同的线路上。谢谢你,这就解决了问题!
 while (in.hasNext()) {
        inName = in.next();     
        //Use next() to read string
        names.add(inName);
 }