Mini Project Set 1 Answer: Fitness Challenge Tracker
Complete Program
class FitnessChallenge {
private String participantName;
private int weeklyStepGoal;
private int stepsTaken;
private int workoutsCompleted;
public FitnessChallenge(String participantName, int weeklyStepGoal) {
this.participantName = participantName;
this.weeklyStepGoal = weeklyStepGoal;
this.stepsTaken = 0;
this.workoutsCompleted = 0;
}
public void addSteps(int steps) {
if (steps > 0) {
stepsTaken += steps;
}
}
public void recordWorkout() {
workoutsCompleted++;
}
public int stepsRemaining() {
if (stepsTaken >= weeklyStepGoal) {
return 0;
}
return weeklyStepGoal - stepsTaken;
}
public boolean goalReached() {
return stepsTaken >= weeklyStepGoal && workoutsCompleted >= 3;
}
public String getSummary() {
return participantName + ": " + stepsTaken + " / " + weeklyStepGoal
+ " steps, " + workoutsCompleted + " workouts";
}
}
public class Main {
public static void main(String[] args) {
FitnessChallenge challenge = new FitnessChallenge("Mina", 8000);
challenge.addSteps(3200);
challenge.addSteps(-100);
challenge.addSteps(5300);
challenge.recordWorkout();
challenge.recordWorkout();
challenge.recordWorkout();
System.out.println(challenge.stepsRemaining());
System.out.println(challenge.goalReached());
System.out.println(challenge.getSummary());
}
}
Output
0
true
Mina: 8500 / 8000 steps, 3 workouts
Key Points
- The constructor creates a ready-to-use object by assigning every instance variable.
- The
if statement prevents a negative step value from decreasing the total.
stepsRemaining() never returns a negative number.
goalReached() needs &&: reaching only one of the two goals is not enough.