2014-01-08 54 views
0

我正在NetBeans 7.4上使用Java进行开发,并试图通过以下代码在同一行上获取连续状态更新。在不换行的情况下获取持续状态更新

for (start=0; start<startLimit; ++start){ 
    System.out.print("Index="+start+" of "+startLimit+"\r"); 
    System.out.flush(); 
} 

我有两个问题。

  • 我得到一个换行符,我不想要。
  • 输出不会不断更新。我在调试模式下运行,并且通常只在IDE的控制台窗口中获取更新时才会中断。看起来每个周期的输出都没有被​​刷新。
+4

运行它,你的IDE之外,那么,看看它是如何表现有。 –

+0

你如何确定你正在换行?如果您从IDE复制/粘贴,则可能是您正在复制的文本框正在执行此操作,或者您正在复制的应用程序(如记事本)。至于脸红,我不知道你为什么这样做。您通常不会刷新System.out PrintWriter。 – CodeChimp

+0

你在什么操作系统上?检查'System.getProperty(“line.separator”)'返回的内容。 –

回答

0

\ r(回车)导致Windows

+0

我认为以下是真的:“*不同操作系统的新行字符组合:** Windows **是'\ r \ n',** Linux **是'\ n',而** MacOS **是'\ r'。*“ –

+0

我认为这是真的,但OP的代码在Windows命令提示符下正在工作。 – Boann

0

换行(就像“\ n”),你可能有一个退格字符,而不是一个回车更好的运气。如果IDE的控制台无法正确解释回车,它可能将不能正确地解释退格,但它的一些尝试:

String status = ""; 
for (start=0; start<startLimit; ++start){ 
    for (int i = 0; i < status.length(); i++) System.out.print('\b'); 
    status = "Index=" + start + " of " + startLimit; 
    System.out.print(status); 
} 
+0

我发现它可以在DOS控制台上正常工作。 – OtagoHarbour

相关问题