미니 프로젝트 세트 1 모범답안: 운동 챌린지 추적기
완성 프로그램
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());
}
}
출력
0
true
Mina: 8500 / 8000 steps, 3 workouts
핵심 포인트
- 생성자는 모든 인스턴스 변수를 할당하여 즉시 사용할 수 있는 객체를 만든다.
if 문은 음수 걸음 수가 전체 걸음 수를 줄이는 것을 막는다.
stepsRemaining()은 음수를 반환하지 않는다.
goalReached()는 두 조건을 모두 만족해야 한다.