import java.util.TreeMap;
import java.io.*;
import java.util.Map;
public class ReadFile {
public static TreeMap<String, Integer> generateFrequencyList()
throws IOException {
TreeMap<String, Integer> wordsFrequencyMap = new TreeMap<String, Integer>();
String file = "file1.txt";
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
String[] tokens = line.split("\\s+");
for (String token : tokens) {
token = removePunctuation(token);
if (!wordsFrequencyMap.containsKey(token.toLowerCase())) {
wordsFrequencyMap.put(token.toLowerCase(), 1);
} else {
int count = wordsFrequencyMap.get(token.toLowerCase());
wordsFrequencyMap.put(token.toLowerCase(), count + 1);
}
}
}
return wordsFrequencyMap;
}
private static String removePunctuation(String token) {
token = token.replaceAll(",", "").replaceAll("\\.", "").replaceAll(";", "").replaceAll("!", "");
return token;
}
public static void main(String[] args) {
try {
TreeMap<String, Integer> freqMap = generateFrequencyList();
for (final Map.Entry<String, Integer> entry : freqMap.entrySet()) {
final String key = entry.getKey();
final Integer value = entry.getValue();
float total = 0;
for (final Integer wordCount : freqMap.values()) {
total += wordCount;
}
final float percentage = (value/total) * 100;
System.out.println(key + " = " + value + " => " + percentage);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
我需要该程序来读取.txt文件并返回单词列表,频率和百分比。我使用的.txt文件比打印出的文字多。这似乎只是印出T - Z的单词。我不知道如何解决它给我所有的话。任何人都有一些想法,为什么它不给我整个单词列表?文件读取器程序未打印单词的全部字母
您能否提供您输入文件的一些示例。 – 2014-12-07 02:30:20
查看评论我留在我的回答你的其他问题。此外,您不需要在每次迭代中重新计算“总数”。 – outlyer 2014-12-07 02:47:11