用arraylist处理java中的卡片

时间:2016-11-18 17:15:46

标签: java arrays arraylist poker

基本上,方法规范所要求的是:从卡座顶部移除指定数量的卡并将它们作为数组返回。例如,如果参数是4,那么套牌中的前四张牌将作为大小为4的数组返回。现在,我已经构建了大部分方法,但是我一直收到错误,并且从我的理解与传递的参数numCards有关。我在检测错误方面遇到了一些困难。有什么建议?另请注意,我在此方法中使用数组,但正如您所见,cards属于ArrayList类型。 this.cards.toArray(小);将cards的内容分配给数组小。卡片将从卡片的正面移除。 ArrayList,而不是后面。

public Card[] deal(int numCards) {
        Card[] dealt = new Card[numCards]; 
          for (int i = 0; i < numCards; i++) {
           dealt[i] = cards.get(i); 
          }
          Card[] small = new Card[cards.size() - numCards]; 
          for (int i = 0; i < cards.size()-numCards; i++)
          {
           small[i] = this.cards.get(i); 
          }
          this.cards.toArray(small);
          return dealt; 
    }

1 个答案:

答案 0 :(得分:0)

你不会从顶部拿走卡片,因为你不知道你已经拿走了多少张卡片,所以你总是这样做。你有没有拿到卡而不是那些?

public Card[] deal(int numCards) {
    Card[] dealt = new Card[numCards]; 
    for (int i = 0; i < numCards && !cards.isEmpty() ; i++) { //check for empty deck to prevent Exception
        dealt[i] = cards.remove(0); 
    }
    return dealt;
}

这将删除第一张牌并将其放入阵列中。我使用0,因为第一个被删除,所以秒成为第一个。

对于small数组。因为你说 this.cards.toArray(小),我不明白你想做什么。将小册子的内容分配给小号,但你不做任何小事。