0

カウンターをインクリメントする際に問題が発生しました。私は何が間違っているのか分かりません。これが初心者の間違いである場合は申し訳ありませんが、理解または役立つ解決策はまだ見つかりません。

  public static int duplicates(String[] text, int numWords){
            int currentCount = 1;
            for (int i=0; i<numWords-1; i++){
                for (int j=i+1; j<numWords; j++){
                    if (text[i] == text[j]){
                        currentCount++;

                    }
                }   
            }

            return currentCount;
        }
4

4 に答える 4

1

Java でオブジェクトを比較するには、「==」演算子の代わりに .equals() メソッドを使用します

if (text[i] == text[j])に変更する必要がありますif (text[i].equals(text[j]))

大文字と小文字の区別を無視したい場合は、.equalsIgnoreCase()代わりに.equals()

于 2013-10-25T04:22:59.873 に答える
0
if (text[i] == text[j])

あなたの間違いは上の行にあります。

Java では、==演算子を使用して文字列を比較しないでください。これにより、2 つの文字列が同じオブジェクトであるかどうかがチェックされます (同一性比較) が、それらが同じ内容を持っているかどうかをチェックしたい (値比較)。

text[i].equals(text[j])代わりに使用する必要があります。

メソッドがnull配列内の値を処理することになっている場合 (つまり、text[i]null になる可能性がある場合)、 を呼び出す前に null をチェックする必要がありますequals

于 2013-10-25T04:21:25.770 に答える
0

に置き換えif (text[i] == text[j]){ますif (text[i].equals(text[j])){

このように使う

public static int duplicates(String[] text, int numWords){
            int currentCount = 1;
            for (int i=0; i<numWords-1; i++){
                for (int j=i+1; j<numWords; j++){
                    if (text[i].equals(text[j])){
                        currentCount++;

                    }
                }   
            }

            return currentCount;
        }
于 2013-10-25T04:21:27.770 に答える
0

文字列値を比較する場合は、equals メソッドを使用します。

if (text[i].equals(text[j])) {
于 2013-10-25T04:22:31.357 に答える