0

私は今日アプリをテストしていて、まったく関係のない変更を行った後、どういうわけか関数が壊れました。そして最も重要なのは、なぜそれが機能しないのかわからないことです。

ここにあります:

public static int componentStrId(String string)
    {
        for(int i = 0; i < GameMain.ComponentNames.length; i++)
        {
            Gdx.app.log("GameCoordinator", "componentStrId index: " + i);
            if(string == GameMain.ComponentNames[i])
            {
                return i;
            }
        }
        return -1;
    }

尋ねる前に、はい、私がフィードした文字列は検索元の配列に存在しますが、関数は-1を返します。アレイを無意味に循環します。

たぶん私は盲目で明らかな間違いを見ることができないかもしれませんが、私はEclipseがびっくりしたような気がします...それで、前者と後者のどちらですか?

4

2 に答える 2

4

これの代わりに ...

if(string == GameMain.ComponentNames[i])

これを使って ...

if(string.equals(GameMain.ComponentNames[i]))
于 2012-12-09T14:24:21.197 に答える
1

あなたが提供する場合

GameMain.ComponentNames[3] 

パラメータとして、を返し3ます。

文字列を個別に作成すると、常に-1==が返されます。これは、両方の参照が同じオブジェクトを指している場合にのみtrueを返します。

于 2012-12-09T14:26:04.183 に答える