Mini Project Set 1: Fitness Challenge Tracker¶
Name: ________
Time: 30 minutes
Build a small Java program that tracks one person's progress toward a weekly exercise goal. Complete the FitnessChallenge class, then run Main to test it.
Learning Goals¶
- Initialize instance variables in a constructor.
- Change an object's state with
voidmethods. - Use a conditional statement to reject invalid input.
- Return
int,boolean, andStringvalues from instance methods.
Program Rules¶
- The constructor receives a participant name and a weekly step goal. Set
stepsTakento0. addSteps(int steps)adds only positive values. Ignore0and negative values.recordWorkout()increasesworkoutsCompletedby1.stepsRemaining()returns0when the goal has been reached; otherwise, return the number of steps still needed.goalReached()returnstruewhenstepsTakenis at leastweeklyStepGoaland at least3workouts have been completed.getSummary()must return this exact style of sentence:Mina: 8500 / 8000 steps, 3 workouts- Do not change the method headers or the code in
Main.
Skeleton Code¶
class FitnessChallenge {
private String participantName;
private int weeklyStepGoal;
private int stepsTaken;
private int workoutsCompleted;
public FitnessChallenge(String participantName, int weeklyStepGoal) {
// TODO
}
public void addSteps(int steps) {
// TODO
}
public void recordWorkout() {
// TODO
}
public int stepsRemaining() {
// TODO
return 0;
}
public boolean goalReached() {
// TODO
return false;
}
public String getSummary() {
// TODO
return "";
}
}
public class Main {
public static void main(String[] args) {
FitnessChallenge challenge = new FitnessChallenge("Mina", 8000);
challenge.addSteps(3200);
challenge.addSteps(-100); // This value must be ignored.
challenge.addSteps(5300);
challenge.recordWorkout();
challenge.recordWorkout();
challenge.recordWorkout();
System.out.println(challenge.stepsRemaining());
System.out.println(challenge.goalReached());
System.out.println(challenge.getSummary());
}
}
Expected Output¶
0
true
Mina: 8500 / 8000 steps, 3 workouts
Before You Submit¶
- Use
this.participantNameandthis.weeklyStepGoalin the constructor. - Make sure invalid step values do not change
stepsTaken. - Use
&&ingoalReached()because both requirements must be satisfied.