0

我试图找到所有相同花色的牌并将其归还。我已经尝试了一切,但我似乎没有做对。

public ArrayList<Card> findSuit(String suit) {

 ArrayList<Card> cards = new ArrayList<Card>();
  for(int i = 1; i <= pack.size(); i++){
   cards.add(i);
  }         
      return cards;   
 }

我收到的错误消息是:

ArrayList 类型中的方法 add(int, Card) 不适用于参数 (int)

4

5 回答 5

2

假如说

  • pack被定义为List<Card>ArrayList<Card>
  • pack在函数内部可见
  • 该类Card有一个名为getSuit()将西装作为字符串返回的方法

那么以下将起作用。

public List<Card> findSuit(String suit) {

  List<Card> cards = new ArrayList<Card>();
  for ( Card card : pack ) {
    if ( card.getSuit().equals(suit) )  {
      cards.add(card); 
    }
  }

  return cards;
 }

将 == 更改为equals(我通常将枚举用于此类事情)。

于 2011-01-11T15:39:10.010 回答
2

首先,集合中的索引从 0 开始,以 size()-1 结束。

我假设卡类有财产诉讼。所以代码:

for(Card c : pack) {
    if(c != null && c.getSuit().equals(suit)){
        cards.add(c);
    }
}
于 2011-01-11T15:39:16.030 回答
1

在这种情况下,您需要add()引用正确类的对象。Card如果没有看到类定义,很难知道如何创建这样的对象,但cards.add(new Card(i))如果存在来自整数的构造函数,则可能会起作用。

于 2011-01-11T15:37:21.977 回答
0

您需要将卡片对象(例如 class Card)添加到 arraylist,它由第二个参数指定add()

例如,如果你有

Card my_card;

然后你做:

cards.add(i, my_card);

当然,您需要Card通过 Card 类构造函数实际创建对象,以便添加它们。

于 2011-01-11T15:37:21.200 回答
0

.Add 需要一个索引 (int) 和一个元素(类型为 Object)。您只指定 int。

有关描述和示例,请参阅文档:http: //download.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html#add (int , java.lang.Object)

于 2011-01-11T15:38:13.030 回答