如何实现字长频率计数器

时间:2015-06-27 11:01:15

标签: java

  

文本分析领域按顺序使用了许多不同的工具   提取有关书面作品的信息。其中一种方法是   字长频率,用于评估写作模式   (例如,一位作者可能更喜欢使用简短的“活泼”字样,   而另一个可能更喜欢更长的单词)。这样的信息可以   有助于识别(或排除)匿名作者   一段文字,它也可以用来改善“流动”或   文本的可读性。最简单的形式,频率分析   计算长度为1,2,3,...,n的单词数,其中n为   给定文本中最长单词的长度。例如,分析   句子“我是男人”会产生输出“2,1,1”(即,   两个长度为1的单词(" I"," a"),一个长度为2的单词(" am")和一个单词   长度为3的单词(" man")。这项任务要求你制作一个   基于文本的应用程序(即在命令行运行的程序,   不是图形程序)执行此分析,计算a   一段文字的统计范围。规范   作业如下:

     

程序应该读取一个名为body.txt的文件,将其打印出来   分析其词长频率。对于"基本" (即通过)标记,   你应该计算文本中字长的频率和   以文本形式显示结果(即,只列出频率)。

到目前为止,我已经得到了下面的代码,我真的在努力学习如何进步,任何人都可以提供的任何指针都会对我有所帮助。我是这个论坛的新手并且自己编码所以如果这是一个基本问题,请不要侮辱我。

import java.io.*;

public class Help1 {

    public static void main(String args[]) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader(
                    "body.txt"));
            String text = null;

            while ((text = reader.readLine()) != null) {

                System.out.println(text);
                // Work in this loop
                // The code takes each line in the file body.txt and
                // prints out each word
                String words[] = text.split(" ");
                for (int i = 0; i < words.length; i++) {
                    System.out.println("words[" + i + "]=" + words[i]);
                }

            }
        } catch (Exception e) {
            e.printStackTrace();

        }
    }
}

1 个答案:

答案 0 :(得分:-2)

你需要一种方法来计算每个单词长度发生的次数,不是你。这是一项任务,对任何只给出答案的人都感到羞耻,但这可能会帮助你通过以下方式思考问题:

  • 您需要一种方法为每个字长保持一个单独的计数器。 听起来像是地图。它将被字长索引,并且与每个索引条目相关联的值将是字长已发生的次数。
  • 你的第一步是获得这个词的长度。
  • 长度可能不在地图中,在这种情况下,您必须对此做些什么。
  • 如果它在列表中,那么您将不得不做一些稍微不同的事情。

最后,您必须遍历地图并打印结果。

您可以在此处获取有关如何使用地图的详细信息:
http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html