我正在编写一个程序来读取文本文件并计算每个单词出现的次数。程序应该输出比用户给出的某个阈值更频繁使用的单词。为了避免枯燥的结果,我将与英语中最常用的100个单词的提供列表进行比较。
添加到HashMap:
try {
// commonHashMap Filled
Scanner sc = new Scanner(new File("commonwords.txt"));
sc.useDelimiter("[^a-zA-Z']");
String str;
while (sc.hasNext()) {
str = sc.next().toLowerCase(Locale.ENGLISH);
commonHashMap.put(str, 1);
}
sc.close();
// bookHashMap Filled
sc = new Scanner(new File(book));
sc.useDelimiter("[^a-zA-Z']");
// Add the non-common words in the book to HashMap.
while(sc.hasNext()) {
str = sc.next().toLowerCase(Locale.ENGLISH);
if (!commonHashMap.containsKey(str)) {
if (bookHashMap.containsKey(str)) {
bookHashMap.put(str, bookHashMap.get(str)+1); }
else {
bookHashMap.put(str, 1); }
}
}
sc.close();
}
显示:
Iterator<Map.Entry<String, Integer>> iterator = bookHashSet.iterator();
while(iterator.hasNext()) {
Map.Entry<String, Integer> x = iterator.next();
if (iterator.hasNext()) {
String key = x.getKey();
int value = x.getValue();
if (value > thresholdValue) {
System.out.println(key + ": " + value);
}
}
}
输出:
1) "The Adventures of Tom Sawyer" by Mark Twain
2) "Tale of Two Cities" by Charles Dickens
3) "The Odyssey" by Homer
Choice Book: 1
Enter Threshold Value: 200
: 27213
don't: 222
tom: 695
huck: 224
me: 212
“27213”来自哪里?
答案 0 :(得分:0)
我刚试过你的代码,我看到它正在计算空白区域。只需使用它来确保它只计算单词:
if (str.length() != 0)
这将查看字符串长度是否为0,这意味着它不包含任何单词。您还可以使用trim()
获得更好的结果。