我正在制作一个程序来比较两个文本文件并返回它们的相似性(基于给定的算法)。对于第一个文件中的每个唯一单词,我想找到它们在第二个文件中出现的概率。但每当我运行程序时,返回的相似度始终为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;
}
有人可以告诉我发生了什么事吗?
答案 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()
而不是==
(字符串文字比较除外)