0

次のステートメントが false を実行しているのを見た人はいますか?

String BloodyHell = "Unbelievable";
if (BloodyHell == BloodyHell) >> false

血まみれの地獄の代わりに、私は持っています: |-,-|or |o,-|or |-,o|or |o,o|or XXXX.

ただし、これらのどれもTRUEにはなりません。正確なものをデバッグしている間は、まだ偽です。

誰かここで私を助けてください。スニペットは次のとおりです。

public String doStats()
{       
        String[] pattern = splitPattern();          
        for (int i = 0; i < pattern.length; i++)
        {
            if (pattern[i] == "|-,-|")
                frontClosed++;
            if (pattern[i] == "|o,-|")
                left++;
            if (pattern[i] == "|-,o|")
                right++;
            if (pattern[i] == "|o,o|")
                frontOpened++;
            if (pattern[i] == "XXXX")
                noFace++;           
        }
}

ここに画像の説明を入力

4

2 に答える 2

3

JavaString#equalsでは、 の代わりに メソッドを使用して文字列値を比較する必要があり==ます。演算子は==オブジェクト参照を比較して、それらが同じオブジェクトであるかどうかを確認します。これが、取得し続ける理由ですfalse。文字列の内容が同じであっても、オブジェクト参照は異なります。

if (pattern[i].equals("|-,-|"))
于 2013-04-10T00:16:59.107 に答える
3

と の間には違いが==ありequals()ます。

文字列を比較するときはequals()、 ;を使用します。==それらがメモリ内で同じものであるかどうかを比較するために使用されます。

于 2013-04-10T00:17:26.903 に答える