Java文本进度条

目录

​编辑

知识点 '\b' 

代码


知识点 '\b' 

        在Java中,\b 是一个转义字符,表示将光标向左移动一个字符位置。当执行 System.out.print("\b") 时,光标会向左移动一个字符位置,如果此时后面有字符,则会被覆盖从而产生删除的效果,也就是说光标所过之处文本都会被删除

 注意:光标指的是这种光标。

由于每次移动光标修改完进度数值以后,所以我们都需要 “修补” 后面的内容。

代码

public class Bar {
    public static void main(String[] args) throws InterruptedException {
        printProgress();
    }
    //光标左移的单位
    public static void printToPre(int num){
        for (int i = 0; i < num; i++) {
            System.out.print("\b");
        }
    }
    //输出进度 '>'
    public static void printBar(int num){
        for (int i = 0; i < num; i++) {
            System.out.print('>');
        }
        for (int i = 0; i < 10-num; i++) {
            System.out.print('-');
        }
        System.out.print(']');
    }
    public static void printProgress() throws InterruptedException {
        System.out.print("下载进度:___%[----------]");
        int i = 0;  //代表进度条的初始值 i%
        int j = 0;  //代表 '>' 的个数
        printToPre(11);//移动到 '[' 后面
        while (i < 101) {
            if (i < 10) {//进度为个位数的情况 0%~9%
                printToPre(3);//移动到 '%' 前面
                System.out.print(i + "%[");
                printBar(j);
                Thread.sleep(250);
                printToPre(11);//移动到 '[' 后面
            }else if(i >=10 && i <= 99){//进度为十位数的情况 10%~99%
                printToPre(4);
                System.out.print(i+"%[");
                printBar(j);
                Thread.sleep(50);
                printToPre(11);//移动到 '[' 后面
            }else {//进度条满的情况 100%
                printToPre(5);
                System.out.print(i+"%[");
                printBar(j);
                printToPre(11);
                System.out.print("下载完成!!!]");
            }
            i++;
            if (i%10 == 0){
                j++;
            }
            //动态加载
//            int tmp=0;
//            for (int k = 0; k < i % 10; k++) {
//                tmp+=1;
//            }
//            j = tmp;
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

你可能感兴趣的:(JavaSE,java)