【发布时间】:2015-03-21 08:06:53
【问题描述】:
我正在尝试遍历 Card 对象的 ArrayList 以查找重复的卡片。 if 语句用于比较列表中的两个不同对象,如果发现重复,只需将布尔值设置为 true。
public boolean hasDuplicate() {
boolean isDupe = false;
for(int a = 0; a < pack.size(); a++){
for(int b = a + 1; b < pack.size(); b++){
if (pack.get(a).equals(pack.get(b))){
isDupe = true;
}
}
}
return isDupe;
}
这是我一直用来测试的。
public void testDuplicate(){
if (pc.hasDuplicate() == true){
System.out.println("There is a dupe");
}
if (pc.hasDuplicate() == false){
System.out.println("No Dupe");
}
}
它总是输出“No Dupe”作为切换布尔值的条件语句从不触发。
任何帮助(阅读:指出我明显的错误)将不胜感激。谢谢!
【问题讨论】:
-
你的 Card 对象是如何实现 equals 的?你如何初始化你的卡片对象列表?
-
您尚未在
Card对象中覆盖equals(Object)。此外,删除所有出现的== true并将所有x == false替换为!x。此外,将if (cond) action1; if (!cond) action2;替换为if (cond) action1; else action2;
标签: java arraylist duplicates conditional-statements