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

时间:2014-03-20 16:11:43

标签: java arraylist

我正在研究ATM模拟程序。目前,我正致力于验证用户输入的方法。我有一个带银行卡对象的arraylist这些对象包含我想要的3个变量 检查给定的reknr和pasnr组合是否与我的arraylist中与bankcard对象的任何reknr和pasnr组合相等。如果arraylist包含给定的组合,则该方法必须返回true,否则它必须返回false。

 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之后我将代码更改为:

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

但仍然是同样的问题。

3 个答案:

答案 0 :(得分:4)

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

return false;循环结束后移动for

答案 1 :(得分:0)

要通过其他内存引用来评估对象的相等性,您必须覆盖equals()方法和hashcode()类的rekpaspin方法。

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

答案 2 :(得分:0)

首先,如@rgettman所述,如果第一个&#39;如果&#39;检查不匹配,您自动返回false,因此需要更好地安排。

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