【问题标题】:How do I allocate members to team without repetition?如何在不重复的情况下将成员分配给团队?
【发布时间】:2019-10-10 14:11:56
【问题描述】:

我想将团队成员分配给特定数量的团队,但在任何团队中都没有重复的成员。如何删除重复?

您好,您能帮我处理一下这段代码吗?我必须为每个团队分配团队成员。教练可以输入候选人的数量,团队的数量,以及候选人的名字。我可以使用链接列表输入以下详细信息,也可以为其生成随机索引。 我正在创建一个二维数组来存储各自数量的团队和其中的成员。但我无法确保每次索引在列表中都是唯一的,即没有歧义。

这里是代码

// 我正在接受候选人的数量并将其存储在链表中 //接受组数 /创建二维数组来存储每个团队的成员 //tn - 团队 //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,hart],则随机索引会重复

2 队,那么原来的结果是 1 队 [ritu,harsh] 队 2 [harsh,mohit]


但预期的输出是 team 1[harsh, ritu] team 2 [vishal, ritu]

【问题讨论】:

    标签: java arrays list


    【解决方案1】:

    目前,您从玩家池中随机挑选成员。但被选中的球员仍留在池中。

    解决方案:从池中移除选中的玩家。

    或者

    因为您已经对玩家池进行了洗牌:只需将他们按顺序分配给每个后续团队即可。

    【讨论】:

    • 嗨,谢谢,但你能为此写一个具体的代码吗?我真的试过但找不到正确的方法。
    • 我正在使用 remove() 但它给出了索引超出范围的错误。不明白为什么?
    • 当您从玩家池中移除时,索引范围也会缩小。在确定下一个随机索引时,您可能忘记考虑这一点。你可能需要index=random.nextInt(name.size());
    【解决方案2】:

    我使用 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();
        }
    }
    

    【讨论】:

    • @KhushiAgarwal 来自我的回答:“检索并删除此列表的头部(第一个元素)”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多