Java程序,用于计算段落中的相似单词
我试图计算从文件中读取的Java段落中出现类似单词的次数,但由于某些原因,该计数不起作用。你能告诉我如何修改这个方法使它能工作吗Java程序,用于计算段落中的相似单词,java,Java,我试图计算从文件中读取的Java段落中出现类似单词的次数,但由于某些原因,该计数不起作用。你能告诉我如何修改这个方法使它能工作吗 void countsmwrd(String str) { int count = 0; String temp = ""; ArrayList<String> vx = new ArrayList<String>(); System.out.println("\nThe tokens are: ");
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;
}
}
您的标记器正在基于…进行拆分,。。在你的典型段落中不会有很多这样的内容。将其更改为仅在空间上拆分。最好是空白\\s*的正则表达式,用于零个或多个空白。您可以利用a来确定字数。我还建议通过调用str.toLowerCase来规范化输入字符串,以便和只计算一个单词。我还将为StringTokenizer中的returnDelims参数传递false,因为分隔符不应构成单词。以下是一个例子:
public int wordCount(String str) {
StringTokenizer s = new StringTokenizer(str.toLowerCase(), " ,.", false);
Set<String> uniqueWords = new HashSet<String>();
while (s.hasMoreTokens()) {
uniqueWords.add(s.nextToken());
}
return uniqueWords.size();
}
当你运行它时会发生什么?etc.空白处\\s的可能重复项。Java需要额外的反斜杠来告诉标记器它的意思是\s。