java控制台输出百分比进度条示例

下面我来详细讲解一下如何实现“java控制台输出百分比进度条示例”。

1. 实现思路

要实现进度条功能,我们可以通过在控制台输出一系列“=”符号来表示进度条的长度,然后再在其后输出当前进度百分比的方式来实现。具体实现步骤如下:

  1. 先确定进度条长度,即宽度为多少个字符,可以自己根据要求来设置。比如我们设置宽度为50,那么进度条长度就是50个字符。
  2. 每次更新进度时,计算当前进度百分比,然后将百分比转换为进度条中需要输出的“=”符号的数量,最后输出当前进度百分比和进度条。
  3. 需要注意的是,在输出进度条时,需要把当前行的内容清空掉,然后再输出更新后的内容。这可以通过Java的控制台光标移动或者输出特殊符号的方式来实现。

2. 代码示例

下面我们分别通过两个示例来说明该实现思路的具体实现方法。

示例一:简单进度条

public class ProgressBarDemo {

    public static void main(String[] args) {
        int total = 100; // 总进度
        for (int i = 0; i <= total; i++) {
            int percent = i * 100 / total; // 计算当前进度百分比
            String progress = getProgressBar(percent, 50); // 获取当前进度条
            System.out.print("\r" + progress + " " + percent + "%"); // 输出当前进度和进度条
            try {
                Thread.sleep(100); // 模拟耗时操作
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    private static String getProgressBar(int percent, int width) {
        int complete = percent * width / 100; // 计算已完成的进度条长度
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < complete; i++) {
            sb.append("="); // 添加已完成的进度条
        }
        for (int i = complete; i < width; i++) {
            sb.append(" "); // 添加未完成的进度条
        }
        return "[" + sb.toString() + "]";
    }
}

该示例中,我们实现了一个简单的进度条,进度条宽度为50。每次更新进度时,通过 getProgressBar() 方法来获取当前的进度条,然后在控制台输出当前进度和进度条。需要注意的是,在输出前需要先清空当前行的内容,这里我们使用了回车符 \r 来完成。

示例二:多线程进度条

public class ThreadProgressBarDemo {

    public static void main(String[] args) {
        ExecutorService threadPool = Executors.newFixedThreadPool(5); // 创建线程池
        int total = 100; // 总进度
        for (int i = 1; i <= total; i++) {
            final int progress = i;
            threadPool.execute(() -> {
                int percent = progress * 100 / total; // 计算当前进度百分比
                String progressBar = getProgressBar(percent, 50); // 获取当前进度条
                System.out.print("\r" + progressBar + " " + percent + "%"); // 输出当前进度和进度条
                try {
                    Thread.sleep(100); // 模拟耗时操作
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            });
        }
        threadPool.shutdown(); // 关闭线程池
    }

    private static String getProgressBar(int percent, int width) {
        int complete = percent * width / 100; // 计算已完成的进度条长度
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < complete; i++) {
            sb.append("="); // 添加已完成的进度条
        }
        for (int i = complete; i < width; i++) {
            sb.append(" "); // 添加未完成的进度条
        }
        return "[" + sb.toString() + "]";
    }
}

该示例是一个多线程进度条,在示例一的基础上加入了线程池和多线程的概念。我们启动了5个线程,每个线程更新进度后输出当前进度和进度条。需要注意的是,在多线程场景下,需要使用线程安全的方式来更新进度条,比如使用 AtomicInteger 来保存当前进度。并且需要合理地调整输出时间间隔,避免频繁刷新输出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java控制台输出百分比进度条示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • SpringBoot集成Tomcat服务架构配置

    SpringBoot集成Tomcat服务架构配置的攻略包括以下几个步骤: 在pom.xml文件中添加Tomcat依赖,示例代码如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-…

    Java 2023年5月19日
    00
  • Springboot之自定义全局异常处理的实现

    关于“Springboot之自定义全局异常处理的实现”的完整攻略,我将从以下几个方面进行详细讲解: 为什么需要自定义全局异常处理 Springboot中全局异常处理的实现方式 自定义全局异常处理的实现步骤及示例说明 1. 为什么需要自定义全局异常处理? 在开发过程中,我们经常遇到各种异常情况,如空指针异常、参数异常、文件未找到等等,这些异常会导致程序崩溃或者…

    Java 2023年5月27日
    00
  • Java线程休眠的5种方法

    Java线程休眠的5种方法 Java中的线程可以通过休眠来暂停一段时间。线程的休眠有5种方法,本文将详细介绍这5种方法,并给出代码示例。 方法一:使用Thread.sleep() Thread.sleep()是Java中比较常用的线程休眠方法。它可以将当前正在执行的线程休眠指定的时间,单位是毫秒。下面是使用Thread.sleep()方法的示例: publi…

    Java 2023年5月19日
    00
  • SpringMvc静态资源访问实现方法代码实例

    在SpringMVC中,我们可以通过配置来实现静态资源的访问。下面我们将详细介绍SpringMVC静态资源访问的实现方法,并提供两个示例来说明这些方法的使用。 配置静态资源访问 在SpringMVC中,我们可以通过配置ResourceHandlerRegistry对象来实现静态资源的访问。以下是一个简单的示例: @Configuration @EnableW…

    Java 2023年5月17日
    00
  • JVM(Java虚拟机)简介(动力节点Java学院整理)

    JVM简介 Java虚拟机(Java Virtual Machine, JVM)是一种可以在不同平台上运行Java字节码的虚拟计算机。它是Java技术最核心的一个部分,也是Java的跨平台特性的体现。 JVM体系结构 JVM主要由以下三部分构成: 类加载器 (Class Loader):负责将.class文件加载到内存,生成Java类,并在内存中生成对应的C…

    Java 2023年5月24日
    00
  • 详解Java中的数组与字符串相关知识

    详解Java中的数组与字符串相关知识 数组 定义 数组是一种用来存储同类型元素集合的数据结构,在Java中通过[]符号定义一个数组。 示例: int[] numbers = new int[5]; 上面的代码定义了一个长度为5的整型数组。 访问 通过下标访问数组元素,下标从0开始,可以直接访问数组元素,也可以遍历数组访问每个元素。 示例: int[] num…

    Java 2023年5月26日
    00
  • Java中的Runnable接口是什么?

    Java中的Runnable接口是一种用于定义线程任务的接口。该接口中只包含一个run()方法,线程通过调用该方法来执行任务。与继承Thread类相比,实现Runnable接口可以更好地体现面向对象的设计模式,并且可以让任务更加灵活地执行。 public interface Runnable { public abstract void run(); } 在…

    Java 2023年4月27日
    00
  • MyEclipse+Tomcat配置详解(图文)

    首先,需要说明的是,配置MyEclipse和Tomcat的过程并不是一成不变的,不同版本的软件可能会有些许差别。但是,总体上来说,配置过程都是大同小异的。接下来,我将根据网站上的“MyEclipse+Tomcat配置详解(图文)”文章,为大家详细讲解配置过程。 步骤一:下载MyEclipse和Tomact 要配置MyEclipse和Tomcat,自然需要先下…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部