Имея немного проблем с итератором next(). Кажется, он не работает правильно. Я работал над этим кодом некоторое время, поэтому я думал, что другой набор глаз поможет.Использование следующей() для вызова следующей итерации ArrayList
Это моя колода класс с создает список объектов карты, я пытаюсь сделать метод, чтобы захватить следующую карту в списке, начиная с первого:
package blackjack;
import blackjack.Card.Rank;
import blackjack.Card.Suit;
import java.util.*;
public class Deck {
public ArrayList<Card> cards = new ArrayList<>();
int i;
Card next;
public Deck() {
initializeDeck();
}
public void printDeck() {
for (Card c: cards)
System.out.println(c);
}
private void initializeDeck() {
for (Suit suit : Suit.values()) {
for (Rank rank : Rank.values()) {
cards.add(new Card(rank, suit));
}
}
}
public Card getNextCard() {
if (cards.listIterator().hasNext() != true) {
getNextCard();
}
else {
next = cards.listIterator().next();
}
return next;
}
}
Это моя главная класс, в котором я вызываю getNextCard(), и я думаю, что он должен сделать, это распечатать первую, а затем следующую карту в списке, но то, что она делает, это печатать первую карту дважды.
package blackjack;
import java.util.*;
public class BlackJack {
public static void main(String[] args) {
Deck deck = new Deck();
System.out.println(deck.getNextCard());
System.out.println(deck.getNextCard());
}
}
Заранее благодарим за любую помощь!
Любите свой бесконечный цикл subtil в 'getNextCard()'! –
похоже, что вы каждый раз получаете новый итератор – Dan