Hashmap 中的值乘以 15?
Values in Hashmap Multiplied by 15?
所以我正在为一个 CS 课程做作业,其中涉及哈希图的使用,我需要在其中跟踪某个单词在页面上出现的次数。
现在由于一些奇怪的原因,我 运行 遇到了一个最奇怪的错误,其中一切似乎都正常工作并且所有内容都存储在地图中,但是,当我打印出来进行测试时,地图乘以 15.
members只出现了8次,但是我的输出是120
redding只出现了32次,但我的输出是480
相关代码如下:
Map<String, Integer> found = new HashMap<>();
while (match.find()) {
String word = match.group().toLowerCase();
Integer check = found.get(word);
if (check == null) {
found.put(word, 1);
} else {
found.put(word, check+1);
}
}
...
for (Map.Entry<String, Integer> entry : found.entrySet()) {
String k = entry.getKey();
Integer i = entry.getValue();
System.out.println("Word: " + k + " \t\t\tFrequency: " + i);
}
有人知道这里会发生什么吗?
编辑:正则表达式等的代码:
String word_pattern = "[A-Za-z]{5,}";
String content = WebDoc.getBodyContent(url);
Matcher match = Pattern.compile(word_pattern).matcher(content);
如果问题出在这里,我不明白为什么,因为这与我导师的示例代码相匹配,而他的示例 运行 没有这个问题。
使用 match.group() 时,您不会只获取所需匹配项的单个实例。
考虑在第一个循环中输出检查值,看看那里发生了什么。
所以我正在为一个 CS 课程做作业,其中涉及哈希图的使用,我需要在其中跟踪某个单词在页面上出现的次数。
现在由于一些奇怪的原因,我 运行 遇到了一个最奇怪的错误,其中一切似乎都正常工作并且所有内容都存储在地图中,但是,当我打印出来进行测试时,地图乘以 15.
members只出现了8次,但是我的输出是120
redding只出现了32次,但我的输出是480
相关代码如下:
Map<String, Integer> found = new HashMap<>();
while (match.find()) {
String word = match.group().toLowerCase();
Integer check = found.get(word);
if (check == null) {
found.put(word, 1);
} else {
found.put(word, check+1);
}
}
...
for (Map.Entry<String, Integer> entry : found.entrySet()) {
String k = entry.getKey();
Integer i = entry.getValue();
System.out.println("Word: " + k + " \t\t\tFrequency: " + i);
}
有人知道这里会发生什么吗?
编辑:正则表达式等的代码:
String word_pattern = "[A-Za-z]{5,}";
String content = WebDoc.getBodyContent(url);
Matcher match = Pattern.compile(word_pattern).matcher(content);
如果问题出在这里,我不明白为什么,因为这与我导师的示例代码相匹配,而他的示例 运行 没有这个问题。
使用 match.group() 时,您不会只获取所需匹配项的单个实例。
考虑在第一个循环中输出检查值,看看那里发生了什么。