# Exercises: Objects and Classes Part 2

Work on these exercises in the IntelliJ `java-web-dev-projects/classes-part-two/exercises` project. You will update your `Student.java` file by implementing the `addGrade` and `getGradeLevel` methods that were sketched out in the Instance Methods section.

## 1. The `getGradeLevel` Method

This method returns the student’s level based on the number of credits they have earned: Freshman (0-29 credits), Sophomore (30-59 credits), Junior (60-89 credits), or Senior (90+ credits).

``````public static String getGradeLevel(int credits) {
if (credits <= 29){
return "freshman";
} else if (credits <= 59){
return "sophomore";
} else if (credits <= 89) {
return "junior";
} else {
return "senior";
}
}``````

## 2. The `addGrade` Method

This method accepts two parameters—a number of course credits and a numerical grade (0.0-4.0). With this data, you need to update the student’s GPA.

### GPA Information

GPA is computed via the formula:

gpa = (total quality score) / (total number of credits)

1. The quality score for a class is found by multiplying the letter grade score (0.0-4.0) by the number of credits.

2. The total quality score is the sum of the quality scores for all classes.

For example, if a student received an “A” (worth 4 points) in a 3-credit course and a “B” (worth 3 points) in a 4-credit course, their total quality score would be: 4.0 * 3 + 3.0 * 4 = 24. Their GPA would then be 24 / 7 = 3.43.

### Determine the New GPA

To update the student’s GPA:

1. Calculate their current total quality score by using the formula `gpa * numberOfCredits`.
2. Use the new course grade and course credits to update their total quality score.
3. Update the student’s total `numberOfCredits`.
4. Compute their new GPA.
 ``````1 2 3 4 5 6 `````` ``````public void addGrade(int courseCredits, double grade) { double totalQualityScore = this.gpa * this.numberOfCredits; totalQualityScore += courseCredits * grade; this.numberOfCredits += courseCredits; this.gpa = totalQualityScore/this.numberOfCredits; }``````

## 3. `toString` and `equals`

Add custom equals() and toString() methods to the Student class.

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 `````` ``````public String toString() { String studentReport = String.format("%s is a %s with %d credits and a GPA of %.2f", this.name, this.getGradeLevel(this.numberOfCredits), this.getNumberOfCredits(), this.getGpa()); return studentReport; } public boolean equals(Object toBeCompared) { if (toBeCompared == this) { return true; } if (toBeCompared == null) { return false; } if (toBeCompared.getClass() != getClass()) { return false; } Student theStudent = (Student) toBeCompared; return theStudent.getStudentId() == getStudentId(); }``````

Add custom `equals()` and `toString()` methods to the `Course` class which you started in the exercises for the previous chapter .