2017-04-22 42 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