2012-04-18 9 views
0

10文字を含むランダムな文字列をテーブルから取り出す方法を見つけようとしています。私はゲームのハングマンを作成していますが、私は単語を二度は欲しません。ゲームは5ワードが選ばれるまで続く。テーブルからランダムな文字列を取得しますが、1回だけ返します

良い解決策はありますか?これは今の私のテーブルのためのランダム化メソッドです。

private String wordList[] = { "String1", "String2", ..... } 
public void getRandomWord(){ 
    Random generator = new Random(); 
    int r = generator.nextInt(9); 
    activeWord = wordList[r]; 
} 

私はこれが動作するようになってみましたが、ない運:

ArrayList<String> usedWords= new ArrayList<String>(); 
public void getRandomWord(){ 
    Random generator = new Random(); 
    int r = generator.nextInt(9); 
    if(addWord(wordList[r])){ 
     activeWord= wordList[r]; 
    } 
} 

private boolean addWord(String word) { 
    for(String v : usedWords){ 
     if(!v.equals(word)){ 
      usedWords.add(word); 
      return true; 
     } 
     else{ 
      getRandomWord(); 
     } 
    } 
    return false; 
} 

私は私が繰り返しを作ったと思うが、私はnessasaryないthatsの推測しています。

私はブール値の文字列テーブルを持つことを考えてきました。もし単語の価値が真実ならば、それをつかまえて、もしそうでなければ、私は言葉を見つけるまで病気を続けるでしょう。

私はwhileループを使用していますか?

+2

事前にシャッフルして、順番に選択するだけです。ルックアップはありません。ブーリアンはなく、衝突はありません。 Fisher-Yatesなどのアルゴリズムを調べてください。 –

答えて

2

wordListをArrayListにすると、リストを使用するたびにその単語をリストから削除できます。そうすれば、可能な値のリストが縮小され、単語を2回選ぶリスクはありません。

+0

私はこの考えが好きです。これはアンドロイドアプリです。これらの単語を文字列値に追加する場合、これはまだ実行可能ですか? – sindrem

+0

はい、私は、ArrayListはアンドロイドプラットフォーム上に存在すると思います。 –

+0

ありがとう。これは本当に助けになりました:) – sindrem

関連する問題