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 回答