我正在为学校项目开发一个小游戏。据称,玩家可以从字符列表中进行选择(稍后我将把选择的字符放入数组中),并且每个字符都可以有一个仅由单个字符组成的名称。
我将字符池放在 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 事物还很陌生,而且我以前没有使用过列表或类似的东西。
最佳答案
如果我理解正确的话,当您填写 ArrayList<Person> 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);
}
关于java - 如何防止列表中字符参数重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43553823/