2014-05-25 64 views
0

我正在創建一個打印三個鈴聲的程序。 當用戶在鍵盤上鍵入一個鍵時,我需要停止該過程,我該怎麼辦? 此外,我會確保每一個鐘聲隨機顯示您的聲音,使用屬性Math.random()。你可以將一個隨機時間關聯到一個線程?如何攔截Java應用程序中的按鍵?

package campane; 

import java.io.*; 
import java.util.*; 

public class GestioneCampane extends Thread { 

    public static void main(String [] args) { 
     BufferedReader tast = new BufferedReader(new InputStreamReader(System.in)); 

     char pressione; 

     Campane campana = new Campane("DIN", 300); 
     Campane campana2 = new Campane("DON", 1000); 
     Campane campana3 = new Campane("DAN", 2000); 

     campana.start(); 
     campana2.start(); 
     campana3.start(); 


    } 
} 

這是第二類

package campane; 

public class Campane extends Thread { 

    private String campane; // word to print 
    private int delay; 

    public Campane(String whatToSay, int delayTime) { 
     campane = whatToSay; 
     delay = delayTime; 
    } 

    public void run() { 
     try { 
      while(true) { 
       System.out.print(campane + " "); 
       Thread.sleep(delay); 
      } 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

所以主要問題是如何聽按鍵?順便說一句,你的課GestioneCampane不需要延長線程 – JohnnyAW

+0

是的,我想通過按控制檯上的任何鍵停止程序。 然後,我想在隨機產生的時間畫出線程,我以爲Math.random。 – user3344186

+0

有沒有簡單的方法來監聽java控制檯中的按鍵,你可以像Sr. Richenso提到的那樣使用KeyBindings,但是你必須使用Swing。在控制檯上聽Key + Enter,如果它適合你,聽起來會容易得多 – JohnnyAW

回答

0

您可以通過中斷它停止線程:

Thread.interrupt() 

您可以停止一個線程在給定時間,之後繼續用它時間消耗:

Long time = 15000L; // in milliseconds 

Thread.sleep(time); 

使用​​3210攔截按鍵並隨機化你的聲音相關性,this example can save time

相關問題