【问题标题】:use an cicle for to add content to an linkedList java使用 cicle 将内容添加到linkedList java
【发布时间】:2011-02-02 17:02:33
【问题描述】:

我有这个脚本,但我不能增加

    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;
}

谢谢!!!!

【问题讨论】:

    标签: java arrays list


    【解决方案1】:

    只需拨打deckOfCards.add(...)

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

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

    更新

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

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

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

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

    【讨论】:

    • 但是如果我这样做,deckOfCards.add(...) 循环没有完成,不是增量,结果是 [null, null, null, null, null, null, null, null,空,空等]
    • @user455318,这是由于您的循环不变量不正确;查看我的更新。
    • 结果是一样的[null, null, null, null, null, null, null, null, null, null, etc],我更新我的帖子
    • @user455318,number_cards 的值是多少?你能在循环中放一条打印语句来检查它实际执行了多少次吗?
    • number_cards = 52;然后我打印出来,显示 52 行特定的 Sysout。那么,问题又来了,什么原因导致结果为null,52次?
    【解决方案2】:

    除了彼得的帖子;如果您需要像在此处尝试那样为列表建立索引,则可以改用ArrayList

    【讨论】:

      猜你喜欢
      • 2013-12-13
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多