2015-10-19 215 views
0

有这个问题,我一直坚持了几个小时。 我想检查一个ArrayList的特定字符串。(java)无法检查ArrayList是否包含特定的字符串

我这是在检查的ArrayList:

public ArrayList getAllowedPlayers() { 
    return this.allowedPlayers; 
} 

的用户名的get小写添加到这个列表。

那么这就是我用它来检查,如果玩家输入的命令就行了:

boolean addedToSSList = data.getAllowedPlayers().contains(astring[0].toLowerCase()); 

“数据”是指已输入的用户名的ArrayList的(ASTRING [0]) 。哪一个在另一个班级。 然后我使用打印聊天消息来检查布尔值是否变为真或假,在我的情况下总是返回false。

 icommandsender.sendChatToPlayer("addedToList: "+addedToSSList); 

不过,我可以看到,输入用户名,添加到列表中有:

 icommandsender.sendChatToPlayer("Allowed players: "+data.getAllowedPlayers()) 

玩家从icommandsender是使用命令,看他是在ArrayList中的人。

所以基本上: 我可以看到,我输入的用户名是在ArrayList(小写)。 astring [0]是我输入的小写的这个用户名。但我的布尔方法仍然会返回false。

+0

也许你前/后间隔,你看不到。 – Andreas

+0

做这个'astring [0] .toLowerCase()。trim()' –

回答

2

试试这个:

boolean addedToSSList = data.getAllowedPlayers().contains(astring[0].toLowerCase().trim()); 

可能是你在你的字符串一些尾随空格。

编辑:

public boolean findString(String s, ArrayList<String> al){ 
    for (String str : al){ 
     if (str.equalsIgnoreCase(s)){ 
      return true; 
     } 
    } 
    return false; 
    } 

,然后你可以找到像

findString("myString", yourArrayList); 
+0

命令字符串总是“用户名”没有空格,所以这不会改变任何东西。 但谢谢你的回答。 – Werkverkeer

+0

@ user3482325: - 更新了我的答案。请立即检查! –

+1

明白了,谢谢! 但主要问题是我的astring [0]是输入的用户名,而不是输入命令的玩家用户名。哎呀。 – Werkverkeer

相关问题