从表中获取随机字符串,但不超过一次

时间:2012-04-18 17:31:29

标签: java

我正在试图弄清楚如何从表中获取随机字符串,包括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;   
}

我想我已经进行了迭代,但我猜这不是必要的。

我一直在考虑使用带有布尔值的字符串表。因此,如果单词的值为true,那么就抓住它,如果不是,那就继续,直到我找到一个单词。

我可能会使用while循环吗?

1 个答案:

答案 0 :(得分:2)

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