Java健身应用类与方法实现相关技术问询
Hey there! No worries at all about your English—we're all here to help, and it's awesome you're diving into building a fitness app for your university course. Let's work through this together.
First, let's clarify your original context and code snippet:
您好,这是我首次在此发帖,英语并非我的母语,若我的问题或表述有不当之处,还望谅解。我正在完成大学课程要求的健身应用开发任务(该应用后续会进行大幅扩展),目前需创建相关类与方法,已尽可能完成部分内容,示例代码如下:
public class Trainingsession { private int workoutTime; private int date; private i...
First, let's fix some basic Java naming conventions (class names use PascalCase, so TrainingSession instead of Trainingsession), then build out a complete, extensible class structure that fits typical fitness app needs:
import java.time.LocalDate; import java.util.ArrayList; import java.util.List; // Follow Java naming convention: PascalCase for class names public class TrainingSession { // Use more descriptive property names private int workoutDurationMinutes; // Replace int with LocalDate for safe, readable date handling private LocalDate sessionDate; // Assume you intended a list of exercises (common for training sessions) private List<Exercise> exercises; // Constructor to initialize core properties public TrainingSession(int workoutDurationMinutes, LocalDate sessionDate) { this.workoutDurationMinutes = workoutDurationMinutes; this.sessionDate = sessionDate; this.exercises = new ArrayList<>(); } // Add an exercise to the session public void addExercise(Exercise exercise) { if (exercise != null) { exercises.add(exercise); } } // Remove a specific exercise from the session public boolean removeExercise(Exercise exercise) { return exercises.remove(exercise); } // Calculate total calories burned in the session public int calculateTotalCaloriesBurned() { return exercises.stream() .mapToInt(Exercise::getCaloriesBurned) .sum(); } // Getters and Setters with proper encapsulation public int getWorkoutDurationMinutes() { return workoutDurationMinutes; } public void setWorkoutDurationMinutes(int workoutDurationMinutes) { this.workoutDurationMinutes = workoutDurationMinutes; } public LocalDate getSessionDate() { return sessionDate; } public void setSessionDate(LocalDate sessionDate) { this.sessionDate = sessionDate; } // Return an unmodifiable list to protect internal data public List<Exercise> getExercises() { return List.copyOf(exercises); } } // Companion Exercise class to support the TrainingSession class Exercise { private String name; private int sets; private int reps; private int caloriesBurned; public Exercise(String name, int sets, int reps, int caloriesBurned) { this.name = name; this.sets = sets; this.reps = reps; this.caloriesBurned = caloriesBurned; } // Getters for exercise properties public String getName() { return name; } public int getSets() { return sets; } public int getReps() { return reps; } public int getCaloriesBurned() { return caloriesBurned; } }
Key Improvements Explained
- Naming Standards: Clear, descriptive names make your code easier to read and maintain as you expand the app.
- Safe Date Handling:
LocalDateavoids messy int-based date logic (like dealing with month/day/year formatting errors) and integrates well with Java's date APIs for future features (e.g., tracking weekly training trends). - Encapsulation: The exercise list is protected—external code can only modify it through
addExercise/removeExercise, and we return an unmodifiable copy to prevent accidental data changes. - Extensible Methods:
calculateTotalCaloriesBurned()adds immediate business value and sets a pattern for other features you might need later (like tracking average reps per exercise).
If your original private i... was meant to be a different property (not a list of exercises), or if you have specific features you need to implement next, just share more details and I can adjust this further!
内容的提问来源于stack exchange,提问作者dbljn

