比较两个String数组

时间:2012-11-08 18:38:32

标签: java

我正在制作一个程序来比较两个文本文件并返回它们的相似性(基于给定的算法)。对于第一个文件中的每个唯一单词,我想找到它们在第二个文件中出现的概率。但每当我运行程序时,返回的相似度始终为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;
}

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

1 个答案:

答案 0 :(得分: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()而不是==(字符串文字比较除外)

请阅读How do I compare strings in Java?