2014-01-08 52 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

相關問題