Java程序计算段落中的类似单词

时间:2014-05-04 14:13:50

标签: java

我试图计算从文件中读取的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;
    }
}

2 个答案:

答案 0 :(得分:1)

您可以利用Set来确定字数。我还建议通过调用str.toLowerCase()来规范化您的输入字符串,以便&#34;&#34; &#34;&#34;&#34;只会算一个字。我还会在false中传递returnDelims参数,因为分隔符不应构成单词。这是一个例子:

StringTokenizer

答案 1 :(得分:0)

您的标记生成器基于“,”进行拆分。您的典型段落中不会包含许多内容。将其更改为仅在空格上拆分。更好的是白色空间的正则表达式(“\\ s *”表示零个或多个空格)。