【问题标题】:Adding my items to an ArrayList将我的项目添加到 ArrayList
【发布时间】:2016-05-17 16:45:00
【问题描述】:

我已经创建了 52 张卡片以添加到我的 ArrayList 中,唯一的问题是当我尝试获取列表中的第一项时,我可能会出现 outofboundserror,因为我认为我的 ArrayList 中没有添加任何内容。

private ArrayList<Card> deck;

public Deck() {
    deck = new ArrayList<Card>();
    for(int i = 1; i < 14; i++) {
        if(i == 1){
            Card c = new Card("Ace", "Hearts");
        }
        else if(i < 11 && i > 1) {
            Card c = new Card("" + i, "Hearts");
        }
        else if(i == 11) {
            Card c = new Card("Jack", "Hearts");
        }
        else if(i == 11) {
            Card c = new Card("Queen", "Hearts");
        }
        else if(i == 11) {
            Card c = new Card("King", "Hearts");
        }
    }

    for(int i = 1; i < 14; i++) {
        if(i == 1) {
            Card c = new Card("Ace", "Clubs");
        }
        else if(i < 11 && i > 1) {
            Card c = new Card("" + i, "Hearts");
        }
        else if(i == 11) {
            Card c = new Card("Jack", "Clubs");
        }
        else if(i == 11) {
            Card c = new Card("Queen", "Clubs");
        }
        else if(i == 11) {
            Card c = new Card("King", "Clubs");
        }
    }

    for(int i = 14; i < 1; i--) {
        if(i == 11) {
            Card c = new Card("King", "Diamonds");
        }
        else if(i == 11) {
            Card c = new Card("Queen", "Diamonds");
        }
        else if(i == 11) {
            Card c = new Card("Jack", "Diamonds");
        }
        else if(i < 11 && i > 1) {
            Card c = new Card("" + i, "Diamonds");
        }
        else if(i == 1) {
            Card c = new Card("Ace", "Diamonds");
        }
    }

    for(int i = 14; i < 1; i--) {
        if(i == 11) {
            Card c = new Card("King", "Spades");
        }
        else if(i == 11) {
            Card c = new Card("Queen", "Spades");
        }
        else if(i == 11) {
            Card c = new Card("Jack", "Spades");
        }
        else if(i < 11 && i > 1) {
            Card c = new Card("" + i, "Spades");
        }
        else if(i == 1) {
            Card c = new Card("Ace", "Spades");
        }
    }
}

如何将它添加到我的 ArrayList 中?

【问题讨论】:

  • else if(i == 11) 重复 3 次。你真的应该注意你提供的代码。
  • 而且,您实际上从未向deck 添加 Card

标签: java arraylist blackjack


【解决方案1】:

要将卡片添加到您的牌组中,您需要调用

deck.add(c);

顺便说一句,使用循环并仅检查循环中的一个值是没有意义的。你可以只调用那行代码一次。

List<Card> deck = new ArrayList<>();
for (String suit : "Hearts,Clubs,Diamonds,Spades".split(",")) {
   deck.add(new Card("Ace", suit));
   for (int i = 2; i <= 10; i++)
       deck.add(new Card("" + i, suit));
   deck.add(new Card("Jack", suit));
   deck.add(new Card("Queen", suit));
   deck.add(new Card("King", suit));
}

【讨论】:

  • 我尝试在测试器和构造器中调用它,但没有成功
  • @Ian 你能更具体一点吗?我添加了一个如何缩短代码的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 2017-09-26
  • 2021-03-19
相关资源
最近更新 更多