2017-11-14 5 views
-1

乱数を生成し、その数に基づいてメロディーを演奏するコードを作ろうとしました。 だから私は次のようにスクリプト:for for文を遅らせています[JAVA]

void playSample(int i) { 

       switch(randomNum[i]) { 
       case 1: 
        //play do1.wav 
        se.setFile(sound1); 
        se.play(); 

        break; 

       case 2: 
        //re 
        se.setFile(sound2); 
        se.play(); 

        break; 

       case 3: 
        //mi 
        se.setFile(sound3); 
        se.play(); 

        break; 

       case 4: 
        //fa 
        se.setFile(sound4); 
        se.play(); 

        break; 

       case 5: 
        //sol 
        se.setFile(sound5); 
        se.play(); 

        break; 

       case 6: 
        //ra 
        se.setFile(sound6); 
        se.play(); 

        break; 

       case 7: 
        //ti 
        se.setFile(sound7); 
        se.play(); 

        break; 

       default: 
        //do2 
        se.setFile(sound8); 
        se.play(); 

        break; 

     } 
} 

とボタンのActionListenerが

bListenMusic.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       //plays the music. 
       //playSample(); 
       for(int i=0; i<8; i++) { 
        playSample(i); 
        //waits. 
       } 
      } 
     }); 
    } 

を押した私はいくつかの方法はのThread.sleep(...)を追加することが含ま試してみました。 forステートメントとplaySampleメソッドの間で、InterruptedExceptionが発生します。 どうすればいいですか? +すべての変数が正常に動作しています。

+0

「Thread.sleep」を使用した場所にコードを貼り付けます。正確なエラーメッセージは次のとおりです。エラーはコンパイル時エラーですか、実行時例外ですか? – hnefatl

+1

これはスイングですか?その場合は 'Timer'を使います。 – Carcigenicate

+0

実際にInterruptedExceptionが発生しますか?あるいは、試してみる/キャッチする/スローするのがわからないということだけですか?そして、すべてのサウンドを配列に入れると、あなたはそのひどいswitch/caseステートメントを持つ必要がなくなります。 –

答えて

0

あなたは一時停止のために並行しているutilパッケージからTime Unitを使用することができます。

TimeUnit.SECONDS.sleep(1); // To sleep for one second or 

TimeUnit.MINUTES.sleep(1); // To sleep for the Minute . 


    import java.util.concurrent.TimeUnit; 


public class test { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     try { 
     for(int i=0; i<8; i++) { 
      playSample(i); 
      //waits. 

       TimeUnit.SECONDS.sleep(3); // for Seconds 
       //TimeUnit.MINUTES.sleep(1); /// for minutes. 

     } 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 




static void playSample(int i) { 

    switch(i) { 
    case 1: 
     //play do1.wav 
     System.out.println("Sound1"); 


     break; 

    case 2: 
     //re 
     System.out.println("Sound2"); 
     break; 

    case 3: 
     //mi 
     System.out.println("Sound3"); 
     break; 

    case 4: 
     //fa 
     System.out.println("Sound4"); 
     break; 

    case 5: 
     //sol 
     System.out.println("Sound5"); 
     break; 

    case 6: 
     //ra 
     System.out.println("Sound6"); 
     break; 

    case 7: 
     //ti 
     System.out.println("Sound7"); 
     break; 

    default: 
     //do2 
     System.out.println("Sound8 Default"); 
     break;} }}