2015-10-19 132 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

相關問題