2011-05-17 258 views
58

我有一個控制檯應用程序,在執行其任務後,必須向用戶提供反饋,例如「操作完成」或「操作失敗」以及詳細的錯誤。讓控制檯等待用戶輸入關閉

問題是,如果我只是「讓它運行」,輸出消息將被打印出來,但控制檯很快就會關閉,沒有時間閱讀消息。據我所知,在C++中,每個控制檯應用程序都會以「按任意鍵退出」或類似的方式結束。在C#中我可以模擬這種行爲

Console.ReadKey(); 

但我怎麼能在Java中做到這一點?我使用的掃描儀類,但考慮到「輸入」是我的掃描儀的實例:

input.next() 
System.exit(0); 

「任意鍵」會工作,除了回報,這是一個相當大的交易在這裏。任何指針?

回答

70

在Java中,這將是System.in.read()

+12

這滿足了「按Enter鍵退出」,而不是「按任意鍵退出」 ,因爲在按下回車鍵之前它不會繼續。 – 2011-05-17 14:26:14

+0

我想「按回車鍵退出」仍然比「按任意鍵除了進入退出」更好。謝謝,那會爲我做。 – makoshichi 2011-05-17 14:38:04

+0

我的應用程序只是掛在System.in.read() – marcolopes 2012-11-07 06:04:54

5

我已經把什麼x4u說。 Eclipse想要一個try catch塊,所以我讓它爲我生成它。

try { 
     System.in.read(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

它也許可以有各種關於它花裏胡哨的,但我認爲這需要一個命令行窗口,而沒有退出,這應該是罰款初學者。

另外我不知道這是多麼普遍(這是我第一次製作jar文件),但它不會自行運行,只能通過bat文件。

java.exe -jar mylibrary.jar 

以上是bat文件在同一文件夾中的含義。似乎是一個安裝問題。

Eclipse的教程來自: http://eclipsetutorial.sourceforge.net/index.html

一些答案的也來了:Oracle Thread

16

我想補充一點,通常你會想要程序等待只有當它連接到一個安慰。否則(如果它是pipeline的一部分),沒有意義打印消息或等待。對於您可以使用Java的Console這樣的:

import java.io.Console; 
// ... 
public static void waitForEnter(String message, Object... args) { 
    Console c = System.console(); 
    if (c != null) { 
     // printf-like arguments 
     if (message != null) 
      c.format(message, args); 
     c.format("\nPress ENTER to proceed.\n"); 
     c.readLine(); 
    } 
} 
2

您可以只使用nextLine();如暫停

import.java.util.Scanner 
// 
// 
Scanner scan=new Scanner(); 

void Read() 
{ 
    System.out.print("Press any key to continue . . .); 
    scan.nextLine(); 
} 

但是任何你按下按鈕除外輸入您必須按下後進入,但我發現它更好比scan.next();

2

我用簡單的黑客,要求窗口使用cmd命令,並將其發送到null。

// Class for Different hacks for better CMD Display 
import java.io.IOException; 
public class CMDWindowEffets 
{ 
    public static void getch() throws IOException, InterruptedException 
    { 
     new ProcessBuilder("cmd", "/c", "pause > null").inheritIO().start().waitFor(); 
    }  
} 
1
public static void main(String args[]) { 
     Scanner s=new Scanner(System.in); 

     System.out.println("Press enter to continue....."); 

     s.nextLine(); 

    } 

nextline是相當不錯的選擇,因爲它會幫助我們運行下一行只要按下回車鍵