使用循环将内容添加到linkedList java

时间:2011-02-02 17:02:34

标签: java arrays list

我有这个脚本,但我无法增加

    LinkedList<Card> deckOfCards = new LinkedList<Card>();

    for (int count = 0; count < deckOfCards.size(); count++) { 
        deckOfCards[count].add(new Card(Rank.values()[count % 13].toString(),Suit.values()[count / 13].toString(), number[count % 13],Image[count % 52]));

    }

我在deckOfCards [count]上收到错误,所以我怀疑我是如何做到这一点的 (表达式的类型必须是数组类型,但它已解析为LinkedList)

我以前的代码是一个数组,并且工作

deckOfCards = new Card[number_cards];

    for (int count = 0; count < deckOfCards.length; count++) { 
        deckOfCards[count] = new Card(Rank.values()[count % 13].toString(),Suit.values()[count / 13].toString(), number[count % 13],Image[count % 52]);
    }
}


//suppose to get na name, value of card, but the result is [null, null, null, etc]
public Card[] giveCardPlayer1() {

    String name1 = Arrays.toString(deckOfCards);
    nameF = name1;
    String suit_1 = deckOfCards.toString();
    suit1 = suit_1;
    return deckOfCards;

}


public int totalValuePlayer1() {
    return currentTotal1;
}

public String name1() {
    return nameF;
}

public String suit_1() {
    return suit1;
}

感谢!!!!

2 个答案:

答案 0 :(得分:4)

只需致电deckOfCards.add(...)

您不能像对待数组一样索引Java List。您必须使用其add()方法。这会将指定的元素追加到列表的末尾。

还有another add() method,它带有int index个参数。但是,由于列表的大小不固定,您不能通过调用deckOfCards.add(count, new Card(...))直接设置列表的n th 元素 - 您需要首先确保指定的元素存在于列表,否则你得到一个IndexOutOfBoundsException。还值得一提的是,对于任何非平凡大小的列表,按索引访问链接列表是一个缓慢的操作(与例如ArrayList s相比)。

更新

啊,你需要修复你的循环不变量。当前版本

for (int count = 0; count < deckOfCards.size(); count++) { ...

永远不会执行循环体,因为列表的初始大小为0.将其更改为

for (int count = 0; count < number_cards; count++) { ...

答案 1 :(得分:0)

除了彼得的帖子;如果您需要像在此尝试一样对列表编制索引,则可以使用ArrayList代替。