功能损坏,即使看起来是正确的

时间:2012-12-09 14:22:59

标签: java eclipse libgdx

我今天一直在测试我的应用程序,并且在完成一个完全不相关的更改之后,某个函数已经破坏了,最重要的是我无法理解它为什么不起作用。

这是:

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吓坏了,虽然也许我只是失明并且看不出明显的错误......那么它是前者还是后者呢?

2 个答案:

答案 0 :(得分:4)

而不是......

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

使用此...

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

答案 1 :(得分:1)

如果您提供

GameMain.ComponentNames[3] 

作为参数,它将返回3

如果单独构造一个String,它将始终返回-1,因为只有当两个引用都指向同一个对象时,==才会返回true。