2017-04-22 23 views
1

我正在为一个学校项目开发一个小游戏。据推测,玩家可以从角色列表中挑选出来(我将在稍后放入数组中的角色),而且每个角色的名字都只能由一个字符组成。如何防止列表中字符参数的重复?

我把字符池放在一个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事物比较陌生,而且我还没有使用过列表或类似的东西。

回答

0

如果我的理解正确,当您填写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); 
} 
+0

谢谢你的快速保存! 我觉得解决方案很简单,但就像我说的,我是一个初学者。 – Delais