콘텐츠로 이동

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 void methods.
  • Use a conditional statement to reject invalid input.
  • Return int, boolean, and String values from instance methods.

Program Rules

  • The constructor receives a participant name and a weekly step goal. Set stepsTaken to 0.
  • addSteps(int steps) adds only positive values. Ignore 0 and negative values.
  • recordWorkout() increases workoutsCompleted by 1.
  • stepsRemaining() returns 0 when the goal has been reached; otherwise, return the number of steps still needed.
  • goalReached() returns true when stepsTaken is at least weeklyStepGoal and at least 3 workouts 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.participantName and this.weeklyStepGoal in the constructor.
  • Make sure invalid step values do not change stepsTaken.
  • Use && in goalReached() because both requirements must be satisfied.