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

関連する問題