1

我正在制作一个程序来比较两个文本文件并返回它们的相似性(基于给定的算法)。对于第一个文件中的每个唯一单词,我想找到它们在第二个文件中出现的概率。但是每当我运行我的程序时,返回的相似度总是 0.0。这就是我现在所拥有的:

public static double nestedLoop(String[] doc1, String[] doc2) {
    // nested loop: sort doc1, for each unique word in doc1, find all
    // occurences in doc2 using a sequential search

    java.util.Arrays.sort(doc1);

    double similarity = 0.0;

    for (int i = 0; i < doc1.length - 1; i++) {
        if (doc1[i] != doc1[i + 1]) {
        String unique = doc1[i];
        double count = 0.0;
            for (int j = 0; j < doc2.length; j++) {
                if (unique == doc2[j]) {
                    count++;
                    similarity += count / doc2.length;
                }
            }
        }
    }
    return similarity;
}

有人可以告诉我发生了什么吗?

4

1 回答 1

9
if (unique == doc2[j]) {

应该

if (unique.equals(doc2[j])) {

相同的 if (doc1[i] != doc1[i + 1]) {

应该:

 if (!(doc1[i].equals(doc1[i + 1]))) {

String比较应始终使用equals()代替== (字符串文字比较的情况除外)

请阅读如何比较 Java 中的字符串?

于 2012-11-08T18:39:19.843 回答