как найти все карты масти, указанные в String, например, "Spades" в java - PullRequest
0 голосов
/ 11 января 2011

Я пытаюсь найти все карты одной масти и вернуть их.Я перепробовал все, но, похоже, я не понял его правильно.

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

Я получаю сообщение об ошибке:

Метод add (int,Card) в типе ArrayList не применяется для аргументов (int)

Ответы [ 5 ]

2 голосов
/ 11 января 2011

Прежде всего, индексы в коллекциях начинаются с 0 и заканчиваются размером () - 1.

Я предполагаю, что класс Card имеет свойство масти.Итак, код:

for(Card c : pack) {
    if(c != null && c.getSuit().equals(suit)){
        cards.add(c);
    }
}
2 голосов
/ 11 января 2011

Предполагая, что

  • pack определено как List<Card> или ArrayList<Card>
  • pack, видимое внутри функции
  • the *У класса 1012 * есть метод с именем 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 (обычно яиспользуйте перечисления для такого рода вещей).

1 голос
/ 11 января 2011

Вам нужно add() ссылка на объект соответствующего класса, Card в этом случае.Трудно понять, как создать такой объект, не видя определения класса, но, возможно, cards.add(new Card(i)) работает, если есть конструктор из целого числа.

0 голосов
/ 11 января 2011

.Add принимает индекс (int) и элемент (типа Object).Вы только указываете int.

См. Документы для описания и примеров: http://download.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html#add(int, java.lang.Object)

0 голосов
/ 11 января 2011

Вам необходимо добавить объект карты (например, класса Card) в массив, который задается вторым аргументом для add()

например. если у вас есть

Card my_card;

Тогда вы делаете:

cards.add(i, my_card);

Конечно, вам действительно нужно создать объект Card через конструктор класса Card, чтобы их можно было добавлять.

...