字计数器程序没有产生正确数量的单词

时间:2015-10-28 19:24:31

标签: java file counter word

我刚从文件中读取文字。 我有一项任务,我需要打印文件中的单词数量。

我在mac OS上使用TextEdit,以.rtf结尾

当我运行以下程序时,即使文档为空,我也会得到输出5。当我添加单词时,计数不会正确递增。

感谢。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Analyze{ 


public static void main(String[] args) throws FileNotFoundException{
    Scanner console = new Scanner(System.in);
    int words = 0; 
    System.out.println("This is a word counter");
    System.out.println("File name");
    String filename = console.next();
    File name = new File(filename);

    Scanner int2 = new Scanner(name);

    while (int2.hasNext()) {
        String temp = int2.next();
        words++;
    }

    System.out.println(words);
    }
}

3 个答案:

答案 0 :(得分:3)

问题是您正在阅读RTF文件。

A'空白' (如没有输入文本)使用TextEdit生成的RTF文件如下所示:

{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf130
{\fonttbl}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww10800\viewh8400\viewkind0
}

如您所见,五行对应于5的输出。

在你的程序中解析RTF,我怀疑你想做,或者将TextEdit切换到纯文本模式。见here

答案 1 :(得分:0)

您要计算的文件是RTF文件?它是否支持斜体,粗体,字体选择等等?在这种情况下,它可能包含一些数据,即使没有文本。您的程序不关心文件格式,因此它天真地将所有内容都作为文本读取。

尝试在您的文件上运行odhexdump(不确定Mac OS X上是否存在这些?) - 它们会打印文件的确切字节。一个真正空的文件不应该产生任何输出。

如果您的计算机没有odhexdump程序,则可以尝试cat。它不会将内容打印为数字,因此它不能提供100%准确的特殊字符视图,但它应该能够向您展示您的文件是否为空。

答案 2 :(得分:0)

除了RTF问题,还要注意

  

扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。

中有空格的

  

空白字符:[\ t \ n \ x0B \ f \ r \ n]

所以计数包括标签,换行符等,而不仅仅是空白