【问题标题】:Make it so that the console will display whatever the user IS typing at the bottom?让控制台显示用户在底部输入的任何内容?
【发布时间】:2016-10-01 16:11:51
【问题描述】:

我有一个将输出打印到命令提示符的程序,但假设会发生这种情况。

while (true) { System.out.println("Something"); }

然后在另一个线程中,程序将从用户那里获取输入。

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try { input = reader.readLine(); } catch ( Exception e ) { /* Do Nothing */ }

现在,有两个线程同时执行,如果我尝试输入Hello World,就会发生这种情况;

Something
Something
Something
Something
HSomething
elloSomething
Something W
Something orl
Something d
Something

有没有办法让用户输入的内容保持在底部,我希望它是这样的;

Something
Something
Something
Something
Something
Something
Something
Hello World
Something

P.S:读者仍然可以分辨出用户输入了哪些内容以及程序打印了什么内容。但是用户会发现很难分辨哪个是哪个。 P.P.S:假设是这样的;

Something
Something
Hello World
Something

因为程序在用户按下 Enter 后立即打印;我希望你知道我想要什么。

【问题讨论】:

  • 你可以有一种计时器,比如计数 3 秒:在每次用户击键时重新启动它,如果它确实达到了 3 秒,则再次开始写入控制台。
  • 好点 assylias 问题是如何告诉程序在用户输入时停止执行或休眠?

标签: java


【解决方案1】:

您没有“将输出打印到命令提示符的程序”。

您有一个写入控制台的程序。

控制台的目的是为您提供一种发送顺序(电传式)文本流的非常简单的方法。

对于比这更复杂的事情,您的程序必须写入控制台,它必须使用 GUI。

Google AWT 和 JavaFX 开始使用。

注意:在那个时代,唯一存在的东西是文本终端,但是计算行业的需求已经增长到需要比电传打字机提供的更多奇特的文本发送方式,各种 hacky发明了古怪的古怪方法以将光标定位在屏幕上的特定位置,甚至指定文本的颜色。它们主要通过发出特殊的控制字符序列来工作。在当今的大多数系统上,默认情况下获得的控制台窗口不支持任何此类控制字符。但即使这样做了,您也明确要求“专业 Java 程序员”的帮助,(所以大概您不关心黑客的意见?)并且专业人士有义务建议您不要过时,过度复杂而神秘的,最终是骇人听闻的做事方式。

【讨论】:

  • 是的,但是,写入和打印输出不是一回事吗?另外,您不是必须是专业人士才能成为黑客吗?但好点我会继续学习 java.awt 库
  • 1.是的,它们是一样的,你专注于错误的词。 2. 不,如果你是一名黑客,你不太可能成为一名专业人士,如果你是一名专业人士,你也不太可能成为一名黑客。
猜你喜欢
  • 1970-01-01
  • 2014-01-13
  • 2012-03-23
  • 2018-11-02
  • 2012-05-30
  • 2022-06-14
  • 1970-01-01
  • 2012-01-29
  • 2011-04-12
相关资源
最近更新 更多