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循环?

4

1 回答 1

2

如果将 wordList 设为 ArrayList,则每次使用时都可以从列表中删除该单词。这样,可能值的列表就会缩小,并且不会有选择两次的风险。

于 2012-04-18T17:40:02.577 回答