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

Java系统实现运动员每日往返行程时间记录与计算的技术咨询

解决运动员往返训练时间记录的问题

嗨,我来帮你搞定这个需求!你现在的代码只用了一个数组存储单程时间,确实没法区分往返的出发/到达,也没法对应到具体运动员和每天的训练。咱们可以用面向对象的思路来重构代码,把每个训练记录的信息封装起来,这样就能轻松记录每日往返的时间啦。

核心思路

咱们需要把每个训练记录的关键信息打包:

  • 运动员标识(姓名/ID)
  • 训练日期(周几,0-6对应你定义的一周顺序)
  • A→B的出发时间、到达时间
  • B→A的出发时间、到达时间
  • 自动计算单程耗时和每日总耗时的方法

完整实现代码

首先定义一个封装训练记录的类,然后再写主类来管理这些记录:

1. 训练记录实体类

public class AthleteTrainingRecord {
    // 运动员信息
    private String athleteName;
    // 周几(0=周一,1=周二...6=周日,可根据你的需求调整)
    private int dayOfWeek;
    // A→B的出发/到达时间(这里假设用当日分钟数,比如420代表7:00)
    private int departAToB;
    private int arriveBFromA;
    // B→A的出发/到达时间
    private int departBToA;
    private int arriveAFromB;

    // 构造方法,初始化一条完整的往返记录
    public AthleteTrainingRecord(String athleteName, int dayOfWeek, int departAToB, int arriveBFromA, int departBToA, int arriveAFromB) {
        this.athleteName = athleteName;
        this.dayOfWeek = dayOfWeek;
        this.departAToB = departAToB;
        this.arriveBFromA = arriveBFromA;
        this.departBToA = departBToA;
        this.arriveAFromB = arriveAFromB;
    }

    // 计算A→B的耗时
    public int getAToBDuration() {
        return arriveBFromA - departAToB;
    }

    // 计算B→A的耗时
    public int getBToADuration() {
        return arriveAFromB - departBToA;
    }

    // 计算当日往返总耗时
    public int getDailyTotalDuration() {
        return getAToBDuration() + getBToADuration();
    }

    // Getter方法,方便获取字段值
    public String getAthleteName() {
        return athleteName;
    }

    public int getDayOfWeek() {
        return dayOfWeek;
    }
}

2. 主类:管理训练记录并统计

import java.util.ArrayList;
import java.util.List;

public class AthleteTrainingSystem {
    public static void main(String[] args) {
        // 用List存储所有训练记录,支持多个运动员的多条数据
        List<AthleteTrainingRecord> trainingRecords = new ArrayList<>();

        // 添加运动员"张三"一周的往返训练记录(示例数据)
        trainingRecords.add(new AthleteTrainingRecord("张三", 0, 420, 450, 460, 495)); // 周一:A→B 7:00出发7:30到;B→A 7:40出发8:15到
        trainingRecords.add(new AthleteTrainingRecord("张三", 1, 415, 448, 455, 490)); // 周二
        trainingRecords.add(new AthleteTrainingRecord("张三", 2, 425, 455, 462, 498)); // 周三
        trainingRecords.add(new AthleteTrainingRecord("张三", 3, 422, 453, 460, 492)); // 周四
        trainingRecords.add(new AthleteTrainingRecord("张三", 4, 418, 447, 458, 491)); // 周五
        trainingRecords.add(new AthleteTrainingRecord("张三", 5, 430, 462, 470, 505)); // 周六
        trainingRecords.add(new AthleteTrainingRecord("张三", 6, 428, 460, 468, 502)); // 周日

        // 统计"张三"的每周训练数据
        String targetAthlete = "张三";
        int weeklyTotal = 0;
        System.out.println(targetAthlete + "的每周训练耗时统计:");
        System.out.println("周几 | A→B耗时 | B→A耗时 | 当日总耗时");
        System.out.println("----------------------------------------");
        for (AthleteTrainingRecord record : trainingRecords) {
            if (record.getAthleteName().equals(targetAthlete)) {
                int aToB = record.getAToBDuration();
                int bToA = record.getBToADuration();
                int dailyTotal = record.getDailyTotalDuration();
                weeklyTotal += dailyTotal;
                System.out.printf("  %d  |    %d    |    %d    |    %d%n", 
                        record.getDayOfWeek(), aToB, bToA, dailyTotal);
            }
        }
        System.out.println("----------------------------------------");
        System.out.println("每周总耗时:" + weeklyTotal + " 分钟");
        System.out.println("每周平均每日耗时:" + (double) weeklyTotal / 7 + " 分钟");
    }
}

代码说明

  • 实体类的优势:把每个训练的所有信息封装在一起,避免了单一数组的局限性,后续你还能轻松扩展字段(比如添加训练类型、天气备注等)。
  • 时间处理:示例中用当日分钟数计算,直接相减就能得到耗时。如果需要更规范的时间格式,可以用Java的LocalTime类替代int,比如LocalTime departAToB = LocalTime.of(7, 0);,计算耗时用Duration.between(departTime, arriveTime).toMinutes()。
  • 扩展性:用List存储记录,支持添加多个运动员的训练数据,后续还能扩展查询功能(比如按运动员、日期筛选记录)。

对比你现有代码的改进

你之前的代码只用静态数组存单程时间,没法区分往返和日期。现在的实现:

  • 可以完整记录每位运动员每日的往返出发/到达时间
  • 自动计算单程和当日总耗时
  • 支持多运动员的训练数据管理
  • 代码结构更清晰,后期维护和扩展更方便

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:39:48