程序完成后如何防止控制台关闭?

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 中出现崩溃异常:找不到行

以上是关于程序完成后如何防止控制台关闭?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 Codeblocks 在程序完成后不关闭控制台?

当打开的控制台窗口关闭时,如何防止我的程序关闭?

当从控制器启动的作业失败时,如何防止弹簧批处理关闭应用程序?

一旦程序完成并在 1 次击键后关闭,是不是有办法让控制台窗口保持打开状态?

C++ 控制台程序在完成前关闭。

防止控制台窗口在 Visual Studio C/C++ 控制台应用程序上关闭