【发布时间】:2016-10-29 03:17:11
【问题描述】:
我有一个 java 应用程序,它通过读取 System.in 的扫描仪获取输入,并通过 System.out 提供输出。扫描仪始终处于活动状态,如果不通过终端使用 Ctrl+C 或在 IDE 中结束进程,它不会终止。
我遇到了一些让我相信 System.out 没有正确刷新的行为。
在我的代码中有以下几行:
System.out.print(",\\" + '\n');
System.out.print(" " + someString);
(someString 不包含换行符)
当我通过终端执行此代码时,空格和 someString 不会打印到终端。但是在我的 IDE 控制台中,它是。 (智能)
如果我将第二条语句更改为 println 而不是 print,它可以正常工作,但它确实在代码的一次执行和下一次执行之间添加了一个新行,这在此处不可行。 (也许我可以用回车做点什么?)
这听起来很像输出没有被刷新,因为它唯一的 System.out.print 有问题。但是,在 print 语句之后添加 System.out.flush() 不会导致它打印。
【问题讨论】:
-
我不太确定问题是什么,但
System.out没有指定它的自动刷新行为;所以这取决于实施。显然,在您的特定设置中,IntelliJ 和任何 JAVA_HOME 设置(猜测用法)不同。 -
可能是这样。我在 windows 和 linux 电脑上都试过了,同样的问题,它们都有相同版本的 JDK。
-
@Sudom82 您是否尝试在我的回答中添加 '\r\n' ?
标签: java system.out