如何在 BlueJ 中自动关闭控制台

问题描述 投票:0回答:1

我只想在方法中退出控制台。

我试过这个:

import java.util.Scanner;

Scanner input = new Scanner(System.in);
System.out.print("Press Enter to quit...");
input.nextLine();

现在我只想结束控制台,我尝试了

System.exit(0);
,但这只会“删除”对象而控制台会保留。还有其他我可以使用的命令吗?

我正在使用 BlueJ 进行学校项目,我们的控制台显示为

System.out.println()
,我想关闭此控制台...我知道您可以单击控制台的
X
窗口,但我想在您单击 Enter 时在方法中自动执行此操作

java console exit
1个回答
1
投票

tl;博士

不,您的Java应用程序无法控制在控制台中运行的外壳应用程序。事实上,您的 Java 应用程序想要操纵或终止该控制台是没有意义的。

详情

显示文本和用户键入的控制台始终处于另一个应用程序的控制之下,而不是您的 Java 应用程序。

要调用非 GUI Java 应用程序,您需要已经使用控制台。该控制台在 Java 应用程序运行之前就存在。该控制台在 Java 应用程序运行后就存在。事实上,控制台会报告 Java 应用程序的最终结果 - 与任何控制台应用程序一样,您的 Java 应用程序会报告“退出代码”,即退出时生成的整数。退出代码指示应用程序是否成功运行。例如:

进程已完成,退出代码为 0

提供控制台的“外部”应用程序可以是:

控制台软件中的
    shell
  • 程序通过计算机终端运行(过去) 控制台内的 shell 程序在
  • 终端模拟器
  • 应用程序中运行,例如 macOS 上的 Terminal.app
  • IDE
  • 窗口窗格内的控制台中运行的 shell 程序。
  • 最后描述了您在
BlueJ

的情况。 BlueJ 是一个专门的 IDE,它隐藏了 Java 编程中涉及的大部分复杂过程。 但基本思想是相同的:当您运行 Java 应用程序时,BlueJ 在其自己的应用程序窗口中构造一个控制台,在该控制台中运行某种 shell,并执行您的 Java 应用程序。 BlueJ 的设计初衷是向初学者隐藏细节,但其背后的操作本质上是相同的。

您可以将计算机视为同心圆:

核心中间是
    CPU
  • 外面的一环是
  • 操作系统
  • 另一个环是与人类交互的控制台应用程序。
  • 下一个响铃是由该控制台运行的 shell 应用程序,例如
  • zshbash 等。shell 通过 命令行界面 提供与人类的便捷交互。 shell 实际上是控制台中的一个应用程序;人类用户可以退出一个 shell 并启动另一个 shell,例如从 bash 切换到 zsh 除此之外的另一个环是在 shell 的命令行界面上调用的任何应用程序。例如,用于运行
  • JVM
  • java executable(“命令”),您的 Java 代码将在其中执行。最终您的 Java 应用程序结束,java 命令退出,向 shell 应用程序返回退出代码。 可以选择启动
  • GUI
  • ,如在 Mac、MS Windows 或 Linux/BSD 台式计算机上看到的那样。你认为这是另一个外环。一些 GUI 计算机在 GUI 出现之前显示控制台正在运行,默认显示或按备用启动方案显示。
  • 👉🏾 要点是:控制台和
shell 应用程序存在于 Java 应用程序

执行之前、期间和之后。 就您而言,BlueJ 正在构建控制台和 shell,并在您的 Java 应用程序运行之前和之后维护它。因此,您的 Java 应用程序无法控制控制台和 shell 的创建/销毁。

© www.soinside.com 2019 - 2024. All rights reserved.