У меня есть две карты ArrayLists, карта с карточками, а затем «запуск» Карт (карты - это объекты.) Я пытаюсь инициировать «запуск» Карт и удалять их карты из руки.ArrayList Remove Is not Removing Object
У меня есть тот же код в другом методе, и он отлично работает. По какой-то причине приведенный ниже код не удаляет ни одну из «бегущих» карт из руки, и я не могу понять, почему. Отладчик показывает метод, передающий правильную Карту; есть идеи?
private ArrayList<ArrayList<Card>> meldDesktop;
public void addMeldRun(ArrayList runToAdd, Hand playerHand, Player player){
this.meldDesktop.add(runToAdd);
//after adding the run to the meld desktop, remove them from the player's
//hand and get points
Iterator<Card> testRoll = runToAdd.iterator();
while (testRoll.hasNext()){
int points = 0;
Card removeCard = testRoll.next();
playerHand.removeCard(removeCard);
points = removeCard.pointValue() + points;
player.setScore(points);
}
}
public ArrayList removeCard (Card newCard){
handCard.remove(newCard);
//Collections.sort(handCard);
return handCard;
}
Проверьте возвращаемое значение 'handCard.remove (newCard)', чтобы узнать, удалил ли он карту. – JNYRanger
Это не так. handCard.remove (newCard) показывает arrayList.size в 7, а затем return handCard также отображает возвращаемый размер 7. Таким образом, removeCard, кажется, получает правильную Карту, но застрял где-то посередине. – Michelle
Что такое handCard? Вы не указали, где/как это объявлено. Вы уверены, что ссылка на объект, возвращаемая 'runToAdd.next()', фактически является той же ссылкой (не обязательно теми же данными), хранящейся в 'handCard'? – JNYRanger