所以我一直在使用这个包含4个独特单词的声音数组,到目前为止,我已经成功地随机化了4个单词。
public void playRandomOrder(int totalWords, int pause) throws InterruptedException {
Random random = new Random(); // Random number generator for array shuffle
for (int i =0; i< numWords; i++) {
int randomPosition = random.nextInt(totalWords); // how many words to sound out (4)
Sound temp = myWordArray[i];
myWordArray[i] = myWordArray[randomPosition];
myWordArray[randomPosition] = temp;
myWordArray[i].blockingPlay();
Thread.sleep(pause);
}
}
但我的下一个目标是以随机顺序播放单词,但只播放一次单词,因为现在,它可以多次播放同一个单词。有关如何实现这一目标的任何建议?我知道怎么用整数来做,但是我已经在声音上试了好几个小时但没有用。
答案 0 :(得分:0)
您可以使用比较器来实现比较,并使用随机比较结果。
final Random rand = new Random();
List<Sound> list = Arrays.asList(myWordArray);
Collections.sort(list, new Comparator<Sound>() {
@Override
public int compare(Sound o1, Sound o2) {
return rand.nextInt() % 2 == 0 ? 1 : -1;
}
});
list.toArray(myWordArray);
for(Sound sound : myWordArray){
sound.blockingPlay();
Thread.sleep(1000); // 1000 as the pause
}
答案 1 :(得分:0)
先将数组洗牌。这里是代码:
public void playRandomOrder(int totalWords, int pause) throws InterruptedException {
Collections.shuffle(myWordArray);
for (int i =0; i< numWords; i++) {
myWordArray[i].blockingPlay();
Thread.sleep(pause);
}
}