有这个问题,我被困了好几个小时。 我试图检查ArrayList中的特定字符串。
这是我正在检查的ArrayList:
public ArrayList getAllowedPlayers() {
return this.allowedPlayers;
}
用户名小写以小写形式添加到此列表中。
然后我用它来检查输入命令的玩家是否在列表中:
boolean addedToSSList = data.getAllowedPlayers().contains(astring[0].toLowerCase());
"数据"指的是已输入的用户名的ArrayList(astring [0])。哪个是另一个班级。 然后我使用print to chat消息来检查boolean是变为true还是false,在我的情况下总是返回false。
icommandsender.sendChatToPlayer("addedToList: "+addedToSSList);
但是,我可以看到输入的用户名已添加到列表中:
icommandsender.sendChatToPlayer("Allowed players: "+data.getAllowedPlayers())
来自icommandsender的玩家是使用该命令查看他是否在ArrayList上的人。
所以基本上: 我可以看到我输入的用户名在ArrayList上(小写)。 astring [0]是我输入的小写的用户名。但是我的布尔方法仍然会返回false。
答案 0 :(得分: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);