我的程序没有显示任何错误消息(如运行时错误),但我几乎处理逻辑错误。所以问题是该程序应该计算文件中每个单词的频率,但事实并非如此。
我从这个程序得到的输出是每个单词的频率(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]);
}
}
}
答案 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
}