我今天一直在测试我的应用程序,并且在完成一个完全不相关的更改之后,某个函数已经破坏了,最重要的是我无法理解它为什么不起作用。
这是:
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吓坏了,虽然也许我只是失明并且看不出明显的错误......那么它是前者还是后者呢?
答案 0 :(得分:4)
而不是......
if(string == GameMain.ComponentNames[i])
使用此...
if(string.equals(GameMain.ComponentNames[i]))
答案 1 :(得分:1)
如果您提供
GameMain.ComponentNames[3]
作为参数,它将返回3
。
如果单独构造一个String,它将始终返回-1,因为只有当两个引用都指向同一个对象时,==
才会返回true。