2013-03-13 68 views
3

我有一個運行在cmd上的java應用程序。我想在運行這個過程時展現進步。在這個應用程序中的50個分支處理和我想要顯示的處理完一個分支後2%完成後又一個分支處理完成4%完成等。 問題是,當我用cmd顯示進度無新行

System.out.print("PROGRESS :" + branch_Vec.get(value).toString()+" : "+ df2.format(((a/total) * 100)) +" % \r"); 

的出來把它轉到新行每次通話的時間。

我要顯示在同一line.For範例進展:

progress : AB : 2% 
+0

喲可以簡單地創建一個線程,查詢進程的當前狀態已完成,並在控制檯上相應地繼續打印 – 2013-03-13 10:04:14

+0

可能重複[如何可以打印到同一行?](http://stackoverflow.com/questions/7939802 /我怎樣才能打印到同一行) – Kai 2013-03-13 10:06:27

+2

@ user714965:這不是重複的。請再次閱讀該問題。 – Fortega 2013-03-13 10:11:44

回答

1

代碼System.out.print("\rComplete: "+percentage);應該正常工作。

\r是一個回車,並將清除當前行。只要你不寫新行\n你可以更新文本。

請注意,如果您正在使用它進行測試,則在Eclipse的控制檯中,此不起作用

0

沒有這樣做,至少在一個簡單的方法方式。問題是,默認的System.outOutputStream可以讓您打電話print(),其中一個接一個地打印字符,或println(),它與print()的做法相同,但也會在文本的末尾添加一行。

一個非優雅的解決方案是清除更新之間的屏幕,以使其看起來像是在相同的位置打印。如果你正在使用Windows,例如,這將是:

Runtime.getRuntime().exec("cls"); 

不幸的是,這條線是與系統相關的,因爲它會調用cls命令。

+0

看看這個[回答](http://stackoverflow.com/a/4207708/451518)到另一個問題。這是可能的,OP是在談論意外的行爲 – 2013-03-13 10:13:31

+0

這很有趣!這在舊的Mac OS(高達版本9)環境中會出現問題,但它現在可能適用於所有平臺。 – 2013-03-13 10:16:20