【问题标题】:How do I prevent repetition in a character argument in a list?如何防止列表中的字符参数重复?
【发布时间】:2017-04-22 00:17:02
【问题描述】:

我正在为一个学校项目制作一个小游戏。据推测,玩家可以从一个字符列表中进行选择(稍后我将把选择的字符放入一个数组中),并且每个字符都可以有一个仅由单个字符组成的名称。

我将字符池放在一个 ArrayList 中,但我不知道如何防止它们将重复的字母作为名称。

ArrayList<Character> names = new ArrayList<Character>();   

        while (names.size() < 10) {
            char random = (char) ((char) rand.nextInt(26)+'A');
            if (!names.contains(random)) {
                names.add(random);
            }
        }  

ArrayList<Person> charpool = new ArrayList<Person>();

        while (charpool.size() < 10){
            charpool.add(new Person(names.get(rand.nextInt(10)), 
                        (r1.nextInt(100)+1), (r1.nextInt(100)+1), 
                        (r1.nextInt(100)+1), (r1.nextInt(100)+1), 
                        (r1.nextInt(100)+1), (r1.nextInt(100)+1), 
                        (r1.nextInt(100)+1), (r1.nextInt(100)+1), 
                        (r1.nextInt(100)+1), (r1.nextInt(100)+1), 
                        true, (r1.nextInt(100)+1), 1));
        }

不要介意 int 变量的冗长列表,它是用于随机技能的。它可能会更漂亮,但在这一点上我不在乎。

我对整个 Java 的东西还是比较陌生,而且我以前没有使用过列表或类似的东西。

【问题讨论】:

    标签: java list arraylist character


    【解决方案1】:

    如果我理解正确,当您填写ArrayList&lt;Person&gt; charpool 时,您希望每个人都有一个独特的角色。

    您可以做的是从names 中删除该字符,一旦您使用它。

    while(charpool.size() < 10) {
        int index = rand.nextInt(names.size()); //Use names.size() since the names ArrayList will get smaller each iteration
        charpool.add(new Person(names.get(index), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), true, (r1.nextInt(100)+1), 1));
        names.remove(index);
    }
    

    【讨论】:

    • 感谢您的快速保存!我认为解决方案很简单,但就像我说的,我还是个初学者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 2015-12-26
    • 2017-12-10
    • 2012-10-05
    • 1970-01-01
    • 2016-10-22
    相关资源
    最近更新 更多