覆盖之前的控制台输出

5

有没有可能覆盖最后一个 System.out.println 的输出,这样我就可以可视化数组中的变化或创建进度条了吗?

例如,如果我有这个类:

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行?

1个回答

4

这在我的特定控制台(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类,但就我所见,它并没有为你带来太多的好处...


谢谢!它在Linux下也可以工作,我能否使用它来清除多行? - reox
1
@reox:不,它只是使用\r回到行的开头,然后写入一堆空格,再次回到行的开头。你可能想看看这个问题,以获取更详细的控制信息:https://dev59.com/dXRC5IYBdhLWcg3wAcQ3 - Jon Skeet
好的,也许我会使用带有文本区域的JFrame :D 谢谢! - reox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接