You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何存储随机清洗时长并计算5辆巴士的最值与平均值?

没问题,我帮你调整代码来实现这个需求!核心思路是先创建一个数组存储每辆巴士的清洗时长,然后循环处理5辆巴士,最后基于数组计算统计值。咱们先看修改后的完整代码,再拆解关键步骤:

import java.util.concurrent.TimeUnit;

public class BusCleaningTest {
    public static void main(String[] args) {
        test();
    }

    public static void test() {
        // 定义数组存储5辆巴士的清洗时长
        long[] durations = new long[5];
        long totalDuration = 0;
        long max = 0;
        long min = Long.MAX_VALUE; // 初始化为最大long值,方便后续找最小值

        for (int i = 0; i < 5; i++) {
            long duration = 2;
            try {
                System.out.println("Bus " + (i + 1) + " Needs Cleaning" + "\n");
                Thread.sleep(1000);
                System.out.println("Bus " + (i + 1) + " getting cleaned");
                Thread.sleep(1000);
                // 生成0-19秒的随机清洗时长
                duration = (long) (Math.random() * 20);
                TimeUnit.SECONDS.sleep(duration);
                // 将当前巴士的清洗时长存入数组
                durations[i] = duration;
                // 累加总时长,同时更新最大最小值
                totalDuration += duration;
                if (duration > max) {
                    max = duration;
                }
                if (duration < min) {
                    min = duration;
                }
            } catch (InterruptedException iex) {
                // 建议不要空catch,至少打印异常信息方便调试
                iex.printStackTrace();
            }
            System.out.println("Cleaner completed cleaning Bus " + (i + 1) + " in " + duration + " Seconds");
            System.out.println("Bus " + (i + 1) + " Leaves\n");
        }

        // 计算平均值,转成double避免整数除法导致精度丢失
        double average = (double) totalDuration / durations.length;
        // 格式化打印统计结果
        System.out.println("=== Cleaning Time Statistics ===");
        System.out.printf("Average Waiting Time: %.1f | Maximum: %d | Minimum: %d%n", average, max, min);
    }
}

关键修改说明:

  • 数组存储时长:创建了long[] durations = new long[5];,专门用来保存每辆巴士的清洗时间,循环时把每次生成的duration存入数组对应索引位置。
  • 循环处理多辆巴士:用for (int i = 0; i < 5; i++)循环5次,每次处理一辆巴士,还通过i+1给巴士编号,输出信息更清晰。
  • 实时计算统计值:在循环里同步累加总时长、更新最大最小值,这样不用事后再遍历一次数组,效率更高;你也可以先存完数组,再单独遍历计算,两种方式都可行。
  • 平均值精度优化:把总时长转成double再除以数量,避免整数除法(比如总时长25、5辆巴士,整数除法会得到5,转double后能保留小数位,结果更准确)。
  • 异常处理优化:原来的空catch块改成打印异常栈信息,方便调试时排查问题。

内容的提问来源于stack exchange,提问作者Javy14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:21:26