我试图计算从文件中读取的Java段落中出现类似单词的次数,但由于某些原因,计数不起作用。你能告诉我如何修改方法,以便它可以工作。
void countsmwrd(String str) {
int count = 0;
String temp = "";
ArrayList<String> vx = new ArrayList<String>();
System.out.println("\nThe tokens are: ");
StringTokenizer s = new StringTokenizer(str, " ,.", true);
for (int i = 0; s.hasMoreTokens(); i++) {
vx.add(s.nextToken());
}
for (int i = 0; i < vx.size(); i++) {
String c = vx.get(i);
for (int j = i; j < vx.size(); j++) {
String k = vx.get(j);
if (c == k && temp.indexOf(c) == -1) {
count = count + 1;
}
}
if (temp.indexOf(c) == -1) {
temp = temp + c;
System.out.println("Character " + c + " occurs " + count + " times");
}
count = 0;
}
}
答案 0 :(得分:1)
您可以利用Set来确定字数。我还建议通过调用str.toLowerCase()
来规范化您的输入字符串,以便&#34;&#34; &#34;&#34;&#34;只会算一个字。我还会在false
中传递returnDelims
参数,因为分隔符不应构成单词。这是一个例子:
StringTokenizer
答案 1 :(得分:0)
您的标记生成器基于“,”进行拆分。您的典型段落中不会包含许多内容。将其更改为仅在空格上拆分。更好的是白色空间的正则表达式(“\\ s *”表示零个或多个空格)。