首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayList检查同一索引处的两个对象值的组合

ArrayList检查同一索引处的两个对象值的组合
EN

Stack Overflow用户
提问于 2014-03-21 00:11:43
回答 3查看 599关注 0票数 1

我正在开发一个自动柜员机模拟程序。目前,我正在研究验证用户输入的方法。我有一个包含银行卡对象的arraylist,这些对象由3个变量组成,我想检查给定的reknr和pasnr组合是否等于我的arraylist中包含银行卡对象的reknr和pasnr组合。如果arraylist包含给定的组合,则该方法必须返回true,否则它必须返回false。

代码语言:javascript
复制
 public static boolean reknrpasnrCheckOke(String reknr,String pasnr){
  for (int i=0; i<rekpaspin.size(); i++){
  if (rekpaspin.get(i).reknr.equals(reknr) && rekpaspin.get(i).pasnr.equals(pasnr))
    return true;
  }
  return false;
  }
 }

输入是什么并不重要,它总是返回false,如何解决这个问题?

编辑::

我在if后面忘了一个{,所以我把代码改成:

代码语言:javascript
复制
 public static boolean reknrpasnrCheckOke(String reknr,String pasnr){
 for (int i=0; i<rekpaspin.size(); i++){
 if (rekpaspin.get(i).reknr.equals(reknr) && rekpaspin.get(i).pasnr.equals(pasnr)){
 return true;
 }
 }
 return false;
 }

但仍然存在同样的问题。

EN

回答 3

Stack Overflow用户

发布于 2014-03-21 00:13:53

您只检查列表中的第一项。如果不匹配,则立即返回false,而不检查其余项。

for循环结束后移动return false;

票数 4
EN

Stack Overflow用户

发布于 2014-03-21 00:15:36

要通过内存引用以外的方法计算对象的相等性,必须重写rekpaspin类的equals()方法和hashcode()方法。

此外,您不应该每次都使用ArrayList<>进行搜索。考虑使用SetHashMap

票数 0
EN

Stack Overflow用户

发布于 2014-03-21 00:24:16

首先,正如@rgettman所说,如果第一个' if‘检查不匹配,您将自动返回false,因此需要更好地安排它。

但是,在这种情况下,您可能希望使用布尔标志。它应该设置为false,直到大小写匹配,在这种情况下,您应该将该标志设置为true。在循环之外,您将返回标志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22538858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档