Как мне распределить участников по команде без повторов? - PullRequest
0 голосов
/ 10 октября 2019

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

Здравствуйте, вы можете помочь мне с этим кодом, я должен распределить членов команды для каждой команды. Тренер может ввести количество кандидатов, количество команд, а также имена кандидатов. Я могу ввести следующие данные, используя связанный список, а также могу сгенерировать случайный индекс для того же. Я создаю двумерный массив для хранения соответствующего количества команд и членов в нем. Но я не могу убедиться, что каждый раз индекс уникален для списка, т. Е. нет двусмысленности.

Вот код

// Я принимаю номеркандидатов и сохранение его в связанном списке // принимаем номер команды / создаем 2d массив для хранения члена каждой команды // tn - team // mem - член в каждой команде

        System.out.println("how many teams do you want: ");
        tn=sc.nextInt();
        mem=num/tn;
                String arr[][]= new String[tn][mem];
        //shuffling the list
        Collections.shuffle(name);
        for(i=0;i<tn;i++)
        {

            for(j=0;j<mem;j++)
            {
                //calculating random index
                index=random.nextInt(num);
//storing element of list in 2d array.

            arr[i][j]=name.get(index);

            name.remove(index);//removing the index
            }
            //name.remove(index);
        }

случайный индекс повторяется, если есть 4 кандидата, названных как [ritu, vishal, mohit, harsh]

2 команды, тогда первоначальный результат - команда 1 [ritu, harsh] команда 2 [harsh, mohit]


но ожидаемый результат - команда 1 [суровый, Риту] команда 2 [Вишал, Риту]

Ответы [ 2 ]

2 голосов
/ 10 октября 2019

В настоящее время вы выбираете случайных членов из своего пула игроков. Но выбранные игроки остаются в пуле.

решение: удалите выбранных игроков из пула.

или

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

0 голосов
/ 10 октября 2019

Я использую LinkedList и его метод poll (), который

Извлекает и удаляет заголовок (первый элемент) этого списка.

Scanner sc = new Scanner(System.in);
System.out.println("how many teams do you want: ");
LinkedList<String> name = new LinkedList<>(List.of("ritu", "vishal", "mohit", "harsh"));
int tn = sc.nextInt();
int mem = name.size() / tn;
String[][] arr = new String[tn][mem];
Collections.shuffle(name);
for (int i = 0; i < tn; i++) {
    for (int j = 0; j < mem; j++) {
        arr[i][j] = name.poll();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...