Java文本进度条

简介: 在Java中,\b 是一个转义字符,表示将光标向左移动一个字符位置。当执行 System.out.print("\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();
            }
        }
    }
}


相关文章
|
6月前
|
JavaScript 前端开发 Java
java调用js实现富文本过滤
java调用js实现富文本过滤
|
安全 Java Spring
【Java用法】Java 过滤html标签获取纯文本信息
【Java用法】Java 过滤html标签获取纯文本信息
218 0
|
12天前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
60 5
|
6月前
|
前端开发 Java
基于Java爬取微博数据(二) 正文长文本+导出数据Excel
【5月更文挑战第12天】基于Java爬取微博数据,正文长文本+导出数据Excel
|
5月前
|
XML Java 数据格式
Java用xpdf库获取pdf文件的指定范围文本内容
Java用xpdf库获取pdf文件的指定范围文本内容
89 1
|
4月前
|
存储 搜索推荐 算法
Java中的文本搜索与全文检索引擎
Java中的文本搜索与全文检索引擎
|
5月前
|
Java 程序员 Spring
“解密Java文本读取:File与MultipartFile“
“解密Java文本读取:File与MultipartFile“
115 0
|
5月前
|
Java 语音技术 Windows
一篇文章讲明白java文本转语音
一篇文章讲明白java文本转语音
34 0
|
6月前
|
Java
Java文本进度条
Java文本进度条
|
6月前
|
Java
Java 15 炫酷特性揭秘:告别拼接,迎接文本块时代
Java 15 炫酷特性揭秘:告别拼接,迎接文本块时代
44 0