分别为每个单词添加频率(Java)

时间:2014-05-15 11:02:45

标签: java file frequency

我的程序没有显示任何错误消息(如运行时错误),但我几乎处理逻辑错误。所以问题是该程序应该计算文件中每个单词的频率,但事实并非如此。

我从这个程序得到的输出是每个单词的频率(1)。例如,我的文件包含单词"和"像10次,但这个程序显示"和"的频率。是(1)当它不是。

我真的很感激任何反馈!

这是我的代码:

import java.util.Scanner;
import java.io.*;

public class FrequencyOfWords {

     static int frequency[] = new int[999];
     static String words[] = new String[999];

     static int count_Word = 0;
     static int individual_Count = 0;

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

         methodForInputtingWords();
         methodForPrintingOutWords();

     }

    public static void methodForInputtingWords() throws Exception {

    File file = new File("file.txt");
    Scanner input = new Scanner(file);

         String x;

         while (input.hasNext()) {

             x = input.next();
             words[count_Word] = x;
             count_Word = count_Word + 1;

             if (count_Word == individual_Count) {
                 words[count_Word] = x;
                 individual_Count = individual_Count + 1;

             } else {

                 frequency[count_Word] = frequency[count_Word] + 1;

             }

         }

    }

     public static void methodForPrintingOutWords() {

         for (int k = 0; k < count_Word; k++) {

             System.out.printf(" %10d %5s", frequency[k], words[k]);
         }
     }

}

2 个答案:

答案 0 :(得分:0)

您可以使用HashMap<String, Integer>存储key为单词且value为单词频率的单词和频率。

答案 1 :(得分:0)

现在你将每个单词放入单词数组中的一个新字段,而不检查它是否已经在那里。

一个简单的解决方案可能是已经提到过的Hashtable,其中包含单词as key和in in value。

if(wordHashTable.containsKey(word))
{
  //increase value for this key
}
else
{
  // add new key with count 1
}