콘텐츠로 이동

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.