2012-03-13 160 views
1

是否有可能覆蓋最後的System.out.println輸出,所以我可以例如可視化數組中的更改或創建一個progessbar?覆蓋以前的控制檯輸出

例如,如果我有此類:

class Main{ 
    public static void main(String[] args){ 
    for(int i = 0; i < 10; i++){ 
     for(int j = 0; j < i; j++){ 
     System.out.print("#"); 
     } 
     System.out.println(""); 
    } 
    } 
} 

我有什麼做來創建這個簡單的進度條,其在一個單一的線表示,而不是在單獨的10行?

回答

2

這工作我特別的控制檯上(Windows),但它不是非常便攜...

public class Test { 
    public static void main(String[] args) throws Exception { 
     for (int i = 0; i < 100; i++) { 
      System.out.print("#"); 
      if (i % 20 == 0) { 
       System.out.print("\r     \r"); 
      } 
      System.out.flush(); 
      Thread.sleep(100); 
     } 
    } 
} 

另外還有Console類,但實際上並不買你很遠,我可以看到...

+0

謝謝!它也適用於linux下,我也可以使用它來清除多行? – reox 2012-03-13 22:30:41

+0

@reox:不,它只是使用'\ r'返回到行首,然後寫入一個空格,然後再次返回行的開始。你可能想看看[這個問題](http://stackoverflow.com/questions/439799/whats-a-good-java-curses-like-library-for-terminal-applications)更精細的控制。 – 2012-03-13 22:34:16

+0

好吧,也許我會用textarea代替jframe:D謝謝! – reox 2012-03-13 22:42:21