2012-04-18 1 views
0

10 단어를 포함하여 테이블에서 임의의 문자열을 가져올 수있는 방법을 찾으려고합니다. 나는 게임 교수형 집행관을 만들고 있지만 한 번만 두 번하는 것을 원하지 않습니다. 게임은 5 단어가 선택 될 때까지 계속 진행됩니다.테이블에서 무작위 문자열을 가져오고 한번 이상

좋은 해결책이 있습니까? 이것은 지금 내 테이블의 무작위 화 방법입니다.

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; 
} 

나는 반복을했습니다 생각하지만, 내가 추측하고있어 높이는 필요한되지 이잖아.

나는 부울 값을 가진 문자열 테이블을 가지고 있다고 생각해 왔습니다. 단어의 가치가 사실이라면, 그것을 잡아서, 그렇지 않다면, 내가 말을 찾을 때까지 계속 병 들어라.

while 루프를 사용할 수 있습니까?

+2

미리 셔플 한 다음 순서대로 선택하면됩니다. 검색, 부울 없음, 충돌 없음. 피셔 - 예이츠 (Fisher-Yates)와 같은 알고리즘을 살펴보십시오. –

답변

2

wordList를 ArrayList로 만들면 사용할 때마다 목록에서 해당 단어를 제거 할 수 있습니다. 그렇게하면 가능한 값 목록이 줄어들고 단어를 두 번 선택할 위험이 없습니다.

+0

나는이 아이디어를 좋아한다. 이것은 안드로이드 응용 프로그램입니다. 이 단어들을 문자열 값에 추가하려고한다면 여전히 유효합니까? – sindrem

+0

예, ArrayList가 안드로이드 플랫폼에 있다고 생각합니다. –

+0

고마워요. 이것은 정말 도움이 :) – sindrem

관련 문제