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)將其從第二個列表中移除0122,第二個列表中有三個是dex 1。
這就是我期待
[Three,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;
}
這就是我現在使用,我真的不想做一個新的變量,如果我不必這樣做,我決定不刪除對象
不刪除王牌,只需保存的地方,它們形成一對的事實。 –
另一種選擇是用'null'替換項目,並忽略'null'項目。 –
我其實嘗試了類似於將數組索引設置爲null的方式,但它立刻給了我一個錯誤,我該如何忽略空值? – gallly