1

2つのテキストファイルを比較し、それらの類似性を返すプログラムを作成しています(特定のアルゴリズムに基づいています)。最初のファイルの一意の単語ごとに、2番目のファイルでそれらが発生する確率を見つけたいと思います。しかし、プログラムを実行すると、返される類似度は常に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 に答える