2011-01-19 80 views
1

我有一個無限循環這樣的事情:打破無限循環

while(true) { 
    //do something 
} 

我希望能夠打破使用的exaple ESC鍵一鍵循環。我認爲這可以使用事件來完成,但因爲我是新來的Java我不能這樣做。 任何人都可以幫助我嗎?先謝謝你!

在while循環中,程序從usb讀取一個值,然後使用套接字通過網絡發送它。我的程序是服務器並向客戶端發送字節。我希望能夠用鑰匙來阻止該服務器!


在while循環中,程序從usb讀取一個值,然後使用套接字通過網絡發送它。我的程序是服務器並向客戶端發送字節。我希望能夠用鑰匙來阻止該服務器!

+5

更多細節。它是一個控制檯應用程序?你可以發佈一些代碼嗎? – adrianboimvaser 2011-01-19 17:14:06

+0

這個問題有些含糊不清,需要更多細節 – 2011-01-19 17:16:03

回答

3

純java本身並沒有鍵輸入的概念。您通常從特定的IO模塊獲取它們(例如,基於控制檯,基於AWT,基於Swing等)。

然後,您會檢查條件或休息。 如果您的新聞通知是異步的,您可能會設置一些標誌(例如,breakRequested),並檢查此標誌,並判斷它是否已更改。

對於控制檯訪問,看看http://download.oracle.com/javase/6/docs/api/java/io/Console.html 但請注意在這裏關於Stackoverflow的許多問題。

+0

「純java本身並沒有關鍵輸入的概念」 - 然後列出可以用來完成這項工作的Java核心庫,退出 – mmcrae 2014-12-15 16:18:42

2

使用break關鍵字。例如:

try { 
    Console console = new Console(); 
    while(true) 
    { 
    String input = console.readLine(); 
    if("quit".equals(input)) 
    { 
     break; 
    } 
    // otherwise do stuff with input 
} 
catch(IOException e) 
{ 
    // handle e 
} 

很多程序員認爲,將下列更具可讀性:

try 
{ 
    Console console = new Console(); 
    for(String input = console.readLine(); !"quit".equals(input); input = console.readLine()) 
    { 
    // do stuff with input 
    } 
} 
catch(IOException e) 
{ 
    // handle e 
} 
+2

`「quit 「.equals(輸入);` – 2011-01-19 17:30:18

+1

不是`console.readLine();`block? – Qwerky 2011-01-19 17:43:42

1

變化,而(真)喜歡的東西,而{...}

0
(isStopped()!)

請記住,當您的應用程序在該塊中並且正在旋轉時,應用程序的其他部分將無法處理指令。除非你將你的工作進程分離到一個新的線程中,並在兩者之間共享一個變量/標記。這樣,當按下某個鍵時,通過捕獲它的任何方式,您可以修改一個布爾變量,該變量將傳遞給您的線程。所以,你可以設置你的循環了類似如下:

while(_flag) 
{ 
    //Spin 
} 
-1
while(true) 
{ 
    if( ) 
    { 
     break; 
    } 
    else if() 
    { 
     break; 
    } 
    else 
    { 
     do something; 
     break; 
    } 
} 
0

我創造了這個程序終止,如果一個特定的鍵被按下一個無限循環:

class terminator { 
    public static void main(String args[]) throws java.io.IOException { 
     char press, clear; 

     for(;;) { 
      System.out.print("Press any key to get display, otherwise press t to terminate: "); 
      press = (char)System.in.read(); 

      System.out.println("You Pressed: "+ press); 

      do { 
       clear = (char)System.in.read(); 
      } while(clear != '\n'); 
      System.out.println("\n"); 
      if (press=='t'|press=='T') { 
       System.out.println("Terminating Program......Program Terminated!"); 
       break; 
      } 
     } 
    } 
} 
0

打破了無限循環一個條件。

公共類WhileInf {

public static void main(String[] args) { 
    int i = 0; 

    while (true) { 
     if (i == 10) { 
      break; 
     } 
     System.out.println("Hello"); 
     i++; 
    } 
} 

}需要