在调试器和运行时中敲击最奇怪的代码。我有一个填充了60个对象的ArrayList。当我遍历此列表并检查内部卡片的唯一性时,增量运算符似乎不起作用?!
这是我的代码检查:
public boolean isPresentOnce(PlayingCard cardToCheck) {
int foundTimes = 0;
for (int i=0;i<playingCards.size();i++) {
if (playingCards.get(i).equals(cardToCheck)) {
foundTimes++;
System.out.println("Found the card:"+foundTimes+":"+i);
}
}
return foundTimes == 1;
}
我得到了这个输出:
Found the card:1:0
Found the card:1:1
Found the card:1:2
Found the card:1:3
<<SNIP>>
Found the card:1:56
Found the card:1:57
Found the card:1:58
Found the card:1:59
为什么我的计数器不会超过1?
我尝试清理我的工作区,尝试进行maven干净安装,使用+ = 1交替代码。并使用一个更复杂的双if语句。似乎没有什么工作,代码的这个角落似乎被打破了。使用double if语句时,return语句根本不会退出该方法。
更多辅助信息:
在运行10.9.5的MacBook Pro上使用带有JRE 1.6.0_65 64位的IntelliJ 13.1.5和HotSpot。
人口看起来像这样:
private ArrayList<PlayingCard> generateCards() {
ArrayList<PlayingCard> cards = new ArrayList<PlayingCard>();
for (int i = 0; i < 60; i++) {
PlayingCard playingCard = new PlayingCard();
List<CardImage> images = new ArrayList<CardImage>();
images.add(new CardImage(TokenColor.Blue, TokenType.Book));
images.add(new CardImage(TokenColor.Gray, TokenType.Chair));
playingCard.addImages(images);
cards.add(playingCard);
}
return cards;
}
为糟糕的代码道歉,这是一个爱好项目; - )
答案 0 :(得分:-1)
所以,如果我理解正确的话,你想检查你的套牌中是否只有一张卡片?对?现在你对输出感到困惑吗?
所以输出就是:
Found the card:1:2
这意味着它找到了位置2的卡!,将计数器递增1,因此您得到了输出。
第一个是卡被找到的时间,第二个是列表中的位置。所以一切都很好!