使控制台等待用户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,因为只要按下回车键,它将帮助我们运行下一行