如何使用java在终端输出中创建类似进度条的东西?

时间:2017-11-06 21:47:42

标签: java

我需要在Netbeans的输出终端上创建类似于带有java的进度条。 我的想法是输出:

loading *

用星号看起来像是通过使用 - \ |序列旋转的东西/ - 。 我想到了这段代码:

public void progressBar(int min){ //minute of spin 
    long time=System.currentTimeMillis();
    long check_time;
    int i=1;
    while(check_time-time<min){
        switch(i){
            case 1:
                System.out.println("loading -");
                i++;
            case 2:
                System.out.println("loading \");
                i++;
            case 3:
                System.out.println("loading |");
                i++;
            case 4:
                System.out.println("loading /");
                i=1;
        }
        check_time=System.currentTimeMillis();
    }
}

但是此代码的输出是:

loading -
loading \
loading |
loading /
// and so on 

我希望&#34; loading&#34;没有连续写入,下面的符号按顺序出现,看起来像一个旋转的轮子。

1 个答案:

答案 0 :(得分:3)

以下适用于我的Windows命令提示符,但它在Eclipse中不起作用,因为Eclipse将\r视为完整的\r\n。不知道它是否在NetBeans或Linux上有效。

String spin = "-\\|/";
for (int i = 0; i < 50; i++) {
    System.out.print("loading " + spin.charAt(i % 4) + "\r");
    System.out.flush();
    Thread.sleep(100);
}

代码将旋转5秒钟。