Синтаксис при поиске элемента массива - PullRequest
0 голосов
/ 30 января 2020

Хорошо, у меня есть метод заполнения, который должен брать карты из перетасованной колоды и добавлять карты одну за другой через верхний метод, а также сортировать их по мастям. Метод top сохраняет карту с shuffledDeck с индексом 0 в переменную, удаляет индекс с 0 и затем возвращает карту. Итак, я добавил первую карту, а затем предположил, что она проверяет, имеет ли следующая карта, которую возвращает верх, другую масть, если она затем добавит ее в список массивов, если она той же масти, то добавьте ее в массив, но в порядке рангов в этом костюме. На данный момент, где предполагается проверить, содержит ли handArray масть предстоящей карты == false не работает.

    public ArrayList fillHand(ArrayList Array, int handSize)
{
    ArrayList<Card> shuffledDeck = Array;                                       

    handArray.add(deck.top(shuffledDeck));                                        

    for (int i = 0; i < handSize + 1; i++)
    {
        if (handArray.contains(shuffledDeck.get(i).getSuit()) == false)
        {
            handArray.add(deck.top(shuffledDeck));  
        }
    }
     return handArray; 
}

1 Ответ

0 голосов
/ 30 января 2020

Поскольку вы не опубликовали код, я буду считать, что Deck - это класс с двумя атрибутами (ранга и масти).

Вы захотите создать метод для этого класса, который заставит его печатать сам (например, «Ace of Spades» или «Jack of Hearts»). Вам также понадобится метод, который возвращает костюм.

Оттуда вы перебираете свой массив и вызываете этот метод на каждом узле, который удовлетворяет требуемой масти

Редактируйте, так как код был опубликован:

Логика c сама по себе кажется некорректной вы перебираете handSize, проверяя, находится ли масть number в handArray. Это серьезная проблема, поскольку handArray - это массив Card , а не массив int .

Существует несколько способов исправить это, более простые: :

Простейший: итерируйте по массиву handArray вручную, проверяя, совпадает ли масть с любой из карт

Быстрее: создает массив размера 4, со всеми значениями, инициализированными как false, представляющими, находится ли костюм в handArray.

Теперь, когда с оператором if обращаются, мы должны исправить его код. На данный момент вы проверяете, подходит ли я в Массиве, и добавляете к нему карту top .

Лучшим вариантом действий здесь будет отказ от l oop, заменив его на что-то вроде этого:

while(ArrayList.size()){
    /* code */
}

Это будет l oop массив из-за того, как работает top, так как он удаляет верхнюю карту

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...