【问题标题】:(java) Can't check if ArrayList contains a specific String(java) 无法检查 ArrayList 是否包含特定字符串
【发布时间】:2016-01-17 20:16:56
【问题描述】:

这个问题我已经被困了好几个小时了。 我正在尝试检查特定字符串的 ArrayList。

这是我正在检查的 ArrayList:

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

用户名以小写形式添加到此列表中。

然后这是我用来检查输入命令的玩家是否在列表中:

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

“data”是指已输入的用户名的ArrayList(astring[0])。这是另一个班级。 然后我使用打印聊天消息来检查布尔值是真还是假,在我的情况下总是返回假。

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

但是,我可以看到输入的用户名已添加到列表中:

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

来自 icommandsender 的玩家是使用命令查看他是否在 ArrayList 上的人。

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

【问题讨论】:

  • 也许你有你看不到的前导/尾随空格。
  • 这样做astring[0].toLowerCase().trim()

标签: java string arraylist contains


【解决方案1】:

试试这个:

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);

【讨论】:

  • 命令字符串总是“用户名”,没有空格,所以这不会改变任何东西。不过谢谢你的回答。
  • @user3482325:- 更新了我的答案。请立即检查!
  • 搞定了,谢谢!然而,主要问题是我的 astring[0] 是输入的用户名,而不是输入命令的玩家用户名。哎呀。
猜你喜欢
  • 2017-08-29
  • 2021-05-18
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 2013-12-23
  • 2020-04-17
  • 1970-01-01
相关资源
最近更新 更多