程序完成后如何防止控制台关闭?
Posted
技术标签:
【中文标题】程序完成后如何防止控制台关闭?【英文标题】:How do you keep the console from closing after the program is done? 【发布时间】:2016-01-31 04:00:24 【问题描述】:在Java
【问题讨论】:
我正在使用 IntelliJ IDEA,但我会将应用程序编译为 jar 文件 在main()
的最后一个右大括号上设置断点?
它不工作。我需要代码
好的,您是否在 IntelliJ 中运行该类并希望在 IntelliJ 控制台上获得一些输出?或者您正在使用 Windows 命令提示符运行 jar?
【参考方案1】:
readLine()
一直等到你按下一个键:
public static void main (String[] args) throws IOException
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
in.readLine();
【讨论】:
【参考方案2】:我发现的最简单的方法:
Scanner scanner = new Scanner(System.in);
scanner.nextLine();
【讨论】:
【参考方案3】:有几种方法可以实现这一点。
您可以在 main
方法的末尾请求用户输入。
您可以创建和启动线程。当您的 main 方法完成时,守护线程会自动关闭。但是,非守护线程将让您的应用程序保持活动状态,直到它们完成。
或者只是在一个对象上调用wait
。
但我不确定,如果应用程序不再执行任何操作,为什么还要让应用程序保持活动状态。
使用非守护线程:
// example of an application that never closes.
public static void main(String[] args)
new Thread(new Runnable()
@Override
public synchronized void run()
for(;;)
try
wait();
catch (InterruptedException e)
).run();
在对象上调用等待:
public static void main(String[] args)throws Exception
Object o = new Object();
synchronized (o)
o.wait();
【讨论】:
【参考方案4】:每次在代码末尾输入空的Scanner
输入都有效,因为扫描器等待用户按 ENTER。
//to-do your code
Scanner.nextLine();
Shame Java 没有内置的控制台应用等待或暂停命令。
编辑:如果你想构建 Scanner,你可以这样做:
Scanner scanner = new Scanner(System.in);
scanner.nextLine();
System.in
是告诉扫描器使用哪个输入流的参数。
【讨论】:
Scanner 构造函数中放入了什么字符串? 我有代码:Scanner pause = new Scanner(""); pause.nextLine();但我在线程“main”java.util.NoSuchElementException 中出现崩溃异常:找不到行以上是关于程序完成后如何防止控制台关闭?的主要内容,如果未能解决你的问题,请参考以下文章
当从控制器启动的作业失败时,如何防止弹簧批处理关闭应用程序?