【问题标题】:Checking through an arraylist and return a boolean result检查数组列表并返回布尔结果
【发布时间】:2014-08-02 09:31:21
【问题描述】:

我遇到了一个问题,retrieveLoginData() 总是返回 false 如何使它返回我的if-else-statement 的值?非常感谢!

private ArrayList<String> login = new ArrayList<String>();

    public boolean retrieveLoginData(LoginRecord lr) {

    for (int i = 0; i < login.size(); i++) {

        if (lr.getLoginName().equals(login.get(i)))

    return true;}// There's a duplicate in the arraylist
    return false; // Returns false if there are no duplicates

}

【问题讨论】:

  • 提供最少的可测试代码。 login 这里是什么。应该是if (lr.getLoginName().equals(login.get(i).getLoginName()))
  • 代码是合法的,如果流程永远不会进入

标签: java arraylist boolean matching


【解决方案1】:

因为您的 if 条件永远不会有效。可能是你想让你使用 equalsignorecase

【讨论】:

  • 你能详细说明一下吗?非常感谢
  • 我想建议的是:登录名是否可能相同但大小写不同(小写,大写)..这可能是问题所在。例如 user1 与 USER1 相同还是不同?在 gmail 用户和 USER 是相同的。
  • 哦,就我而言,它不区分大小写。所以只要数组中有匹配,它就会返回一个true
【解决方案2】:

retrieveLoginData() 一直返回 false,因为您只分配了 ArrayList 登录名,而没有给登录名赋予任何值。因为这个登录名是空的,它的大小为 0,当第一次进入循环块时循环退出。

【讨论】:

  • 我正在努力做到这一点,如果登录 ID 不存在于数组列表中,那么它将被创建并存储在其中。如果它已经存在,它将返回false
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 2021-12-14
  • 1970-01-01
  • 2011-06-19
  • 2012-10-06
  • 1970-01-01
相关资源
最近更新 更多