public boolean isTwoPair() {
boolean isTwoPair = false;
Collections.sort(deck);
List<Card> cards = new LinkedList<Card>(deck);
System.out.println(cards);
for (int i = 0; i < cards.size()-1; i++) {
for (int j = i + 1; j < cards.size()-1; j++) {
if (deck.get(i).equals(deck.get(j))) {
cards.remove(i);
cards.remove(j);
System.out.println(cards);
}
}
}
return isTwoPair;
}
我觉得我的问题在于cards.remove()。当我移除一张卡片时,下次再次移除卡片时会从修改后的列表中移除。有没有办法在它们具有相同索引号的情况下从列表中删除两个项?
如果我必须移除索引0,1,因为它们都是成对出现的,就像这样:
[Ace,Ace,Three,Four,Four]
代码会像这样删除它(删除索引0)。
[Ace,Three,Four,Four]
与其从第一个列表中删除索引1(Ace),不如从第二个列表中删除它,这样
[Ace,Four,Four]
它从第二个列表中删除了索引1,该索引对应的值是3。
这就是我期望的结果。
[Three,Four,Four]
在这个时候,我期望我的循环将选取并移除“Four”和“Four”。
编辑:
public boolean isTwoPair() {
boolean isTwoPair = false;
Collections.sort(deck);
List<Card> cards = new LinkedList<Card>(deck);
System.out.println(cards);
for (int cardOne = 0; cardOne < cards.size(); cardOne++) {
for (int cardTwo = cardOne + 1; cardTwo < cards.size(); cardTwo++) {
if (deck.get(cardOne).equals(deck.get(cardTwo))) {
cards.remove(cardOne);
cards.remove(cardTwo-1);
System.out.println(cards);
for(int cardThree = 0; cardThree < cards.size(); cardThree++){
for(int cardFour = cardThree+1; cardFour < cards.size(); cardFour++){
if(cards.get(cardThree).equals(cards.get(cardFour))){
cards.remove(cardThree);
cards.remove(cardFour-1);
System.out.println(cards);
isTwoPair = true;
}
}
}
}
}
}
return isTwoPair;
}
我现在正在使用的是这个,如果不必要的话,我并不想新建一个变量,因此我决定不删除 Object。
null
替换项目,并忽略掉null
项。 - Jason Cif (deck.get(cardOne) != null) { ... }
- Jason C