Java - 扫描仪拒绝关闭?

标签 java file

我创建了一个程序,它接受一个文件并分别输出该文件中的行数、单词数和字符数。

我的问题是,当我编译程序时,它被“卡住”,并且交互 Pane (或控制台)上没有输出任何内容。

while 循环应该终止,新的扫描仪对象应该覆盖旧的扫描仪对象。

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

    String[] filenames = new String[]{"cat.txt", "dog.txt", "mouse.txt", "horse.txt"} ;
    int totalLines = 0, totalWords = 0, totalCharacters = 0 ;

    for (String filename : filenames) 
    {
        int lines = 0, words = 0, characters = 0;

        try {

            Scanner scanner_lines = new Scanner (new File(filename)); //Reading Lines
            while (scanner_lines.hasNextLine()){
                lines++;
            }
            scanner_lines.close();

            Scanner scanner_words = new Scanner (new File(filename)); //Reading Words
            while (scanner_words.hasNext()){
                words++;
            }
            scanner_words.close();

            Scanner scanner_chars = new Scanner (new File(filename)); //Reading Characters
            scanner_chars.useDelimiter("");
            while (scanner_chars.hasNext()){
                characters++;
            }
            scanner_chars.close();
        } // end of try
        catch (FileNotFoundException e) {}

        System.out.println (lines + " " + words + " " + characters);

    }
}

最佳答案

循环需要消耗该行,而不仅仅是确定它的存在:

Scanner scanner_lines = new Scanner (new File(filename)); //Reading Lines
while (scanner_lines.hasNextLine()){
    scanner_lines.nextLine();   // this is critical
    lines++;
}

关于Java - 扫描仪拒绝关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22426192/

相关文章:

java - Spring Boot - 实体中的自定义类字段

java - 使用 JavaFX 中的 FileChooser 禁用隐藏文件

java.lang.VerifyError : class org. codehaus.jackson.map.type.ArrayType 覆盖 final方法 isAbstract.()Z

Android:媒体文件从文件系统中消失

file - 如何将我的 SSH 公钥发送给某人?

c++ - 如何为 C++ 程序创建安装文件?

java - Primefaces 数据表 : partial processing on row selection

java - SQL(例如 mysql、postgresql)与 java8 流性能相比,速度更快?

javascript - 在 nodejs 中写入文件之前对数据流进行排序

Android Intent.Action_view 文件权限被拒绝