Почему Arraylist <>.sublist () не отображается на определенный пользователем тип данных arraylist <>? - PullRequest
0 голосов
/ 29 ноября 2018
import java.io.*;
import java.util.*;
public class Cards
{
    private int value;
    private char suit;
    public Cards()
    {
        value = 0;
        suit = '0';
    }
    private void setValue (int value)
    {
        this.value = value ;
    }
    private void setSuit (char suit)
    {
        this.suit = suit;
    }
    public int getValue ()
    {
        return value;
    }
    public char getSuit ()
    {
        return suit;
    }
    public Cards[] dealCards(int userCount)
    {
        int n = (userCount * 2)+5;
        ArrayList <Cards> pack = new ArrayList<>(52);
        for (int i=0;i<13;i++)
        {
            Cards card = new Cards ();
            for (int j=0;j<4;j++)
            {
                card.setValue (i+1);
                switch (j)
                {
                    case 0: card.setSuit('C');
                    break;
                    case 1: card.setSuit('D');
                    break;
                    case 2: card.setSuit('H');
                    break;
                    case 3: card.setSuit('S');
                    break;
                    ;
                }
                pack.add(card);
            }
        }
        Collections.shuffle(pack);
        pack = pack.sublist(0,n);
        return pack;
    }
    public static void main(String[] args) 
    {
       int userCount = 2;
        Cards newTable[]= new Cards[(userCount*2)+5];
        newTable.dealCards(userCount);
        for(int i=0;i<(userCount *2)+5;i++)
        {
            System.out.println(newTable[i].getValue() + newTable[i].getSuit() );
        }
    }
}

Вышеприведенный код должен раздавать набор уникальных карт.Но при компиляции возникают определенные ошибки:

1 - строка, в которой pack = pack.sublist (0, n) Не удается найти ошибку символа.

2 - массив нельзя преобразовать вКарты [] при возврате

3 - newTable.dealCards (userCount), кажется, выбрасывает, не может найти ошибку символа.Есть ли способ исправить эту ошибку, не меняя слишком много кода!Можем ли мы сохранить список в массиве?Вместо того, чтобы и arraylist.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

1 - строка, в которой pack = pack.sublist (0, n) Не удается найти возникшую ошибку символа.

Используется опечатка: pack = pack.subList(0,n);

2 - массив нельзя преобразовать в карты [] при возврате

subList возвращает другой список.Объявите пакет как:

List<Cards> pack = new ArrayList<>(52);

, а затем измените объявление на

public List<Cards> dealCards(Cards[] newTable) {

3 - newTable.dealCards (userCount), кажется, выбрасывает, не может найти ошибку символа.

Вы не можете вызвать dealCards() без создания объекта.Для этого используйте:

Cards cards = new Cards();
cards.dealCards(newTable);

Теперь ваш основной будет выглядеть примерно так:

public static void main(String[] args) {
    int userCount = 2;
    Cards cards = new Cards();
    Cards newTable[] = new Cards[(userCount * 2) + 5];
    List<Cards> dealCards = cards.dealCards(newTable);
    for (int i = 0; i < (userCount * 2) + 5; i++) {
        System.out.println(dealCards.get(i).getValue() + dealCards.get(i).getSuit());
    }
}
0 голосов
/ 29 ноября 2018

Вы можете исправить их следующим образом:

pack.sublist (0, n) Не удается найти возникновение ошибки символа.

List<Cards> pack = new ArrayList<>(52);
pack = pack.subList(0, n); // 1

arraylist не можетбыть преобразованным в карты []

return pack.toArray(new Cards[0]); //2

newTable.dealCards (userCount), кажется, выбрасывает, не может найти ошибку символа

Cards[] newTable = new Cards().dealCards(userCount); //3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...