使用声音阵列,如何播放随机的独特声音?

时间:2016-09-30 15:52:41

标签: java audio random

到目前为止,这段代码听起来像是"这是一个测试"以随机顺序,但这些词可以重复多次。 myWordArray是一个在程序中设置的静态声音数组,它从特定声音中读取拼接点。

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); // 320 m.seconds, as listed in main method parameter
}
}

我希望它是这样的,这些单词可以随机播放,但没有一个单词重复。例如&#34;这个测试是&#34;而不是&#34;这是测试&#34;以下是我迄今为止的独特随机词......

public void playRandomUnique(int pause) throws InterruptedException {
    final Random random = new Random();
    List<Sound> list = Arrays.asList(myWordArray);
    Collections.sort(list, new Comparator<Sound>(){
        @Override
        public int compare(Sound o1, Sound o2){
            return random.nextInt() % 2 == 0 ? 1 : -1;
        }
    });
    list.toArray(myWordArray);
    for (Sound sound: myWordArray)
        sound.blockingPlay();
        Thread.sleep(pause);

}

然而,这导致了线程&#34; main&#34;中的&#34;异常。 java.lang.IllegalArgumentException:比较方法违反了它的一般合同!&#34;当我在main中运行它时没有声音播出。

0 个答案:

没有答案