使控制台等待用户inputclosures

我有一个控制台应用程序,执行任务后,必须给用户反馈,如“操作完成”或“操作失败”和详细的错误。

事情是,如果我只是“让它跑”,输出消息将被打印,但控制台将很快closures,没有时间阅读消息。

据我所知,在C ++中,每个控制台应用程序将以“按任意键退出”或类似的方式结束。 在C#中,我可以用a来模拟这个行为

Console.ReadKey(); 

但是我怎样才能在Java中做到这一点? 我正在使用扫描仪类,但鉴于“input”是我的扫描仪实例:

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

“任何关键”都可以工作,除了回报,这在这里是一个很大的问题。 任何指针?

在Java中,这将是System.in.read()

我想补充一点,通常你会希望程序只有在连接到控制台时才能等待。 否则(就像它是stream水线的一部分一样),打印消息或等待是没有意义的。 为此,你可以像这样使用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(); } } 

Java控制台input的问题在于它是缓冲input,并且需要一个回车键才能继续。

有两个讨论: 在控制台应用程序中 检测和操作Java中的键盘方向键和Java键盘input分析

后者使用JLine来解决他的问题。

我个人并没有使用它。

我已经把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

你可以使用nextLine(); 作为暂停

 import.java.util.Scanner // // Scanner scan=new Scanner(); void Read() { System.out.print("Press any key to continue . . . ); scan.nextLine(); } 

然而,除了Enter之外,您按下的任何button之后都必须按Enter,但是我发现它比scan.next();更好scan.next();

我用简单的黑客,要求Windows使用cmd命令,并将其发送到空。

 // 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(); } } 
  public static void main(String args[]) { Scanner s=new Scanner(System.in); System.out.println("Press enter to continue....."); s.nextLine(); } 

这个nextline是相当不错的select,因为只要按下回车键,它将帮助我们运行下一行