2012-03-13 102 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