Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

JAVA: Some courses assign letter grades, whereas other courses assign a percenta

ID: 3744385 • Letter: J

Question

JAVA: Some courses assign letter grades, whereas other courses assign a percentage
between 0 and 100. Still others assign a pass/fail grade.
Write an interface named Grade. The toPercent method returns the grade as
an integer percentage between 0 and 100 percent. The toString method
prints the grade in its “native” format (a percentage, a letter grade, or either
“Pass” or “Fail”). The isPass method returns true for a passing grade,
false otherwise. The includeInAverage returns true for letter and
numeric grades, but false for pass/fail grades.
Write three classes that implement Grade: LetterGrade, PercentageGrade,
and PassFailGrade. Write a main method that fills an array with grades. For
each grade, print on one line the native format, “Pass” or “Fail” (as appropriate),
and the percentage (if it can be included in an average). After the list of
grades, print the average grade as a percentage.
Use your school’s mapping between letter grades and numeric grades, if it has
one. Otherwise, make up something like A+ is 95%, A is 90%, etc.

Explanation / Answer

public interface Grade { int toPercent(); boolean isPass(); boolean includeInAverage(); } class LetterGrade implements Grade { String grade; public LetterGrade(String grade) { this.grade = grade; } @Override public int toPercent() { if (grade.equals("A+")) { return 95; } else if (grade.equals("A")) { return 90; } else if (grade.equals("B+")) { return 80; } else if (grade.equals("B")) { return 70; } else if (grade.equals("C")) { return 50; } else if (grade.equals("D")) { return 40; } else { return 30; } } @Override public boolean isPass() { return toPercent() >= 40; } @Override public boolean includeInAverage() { return true; } @Override public String toString() { return "LetterGrade: " + grade; } } class PercentageGrade implements Grade { int percentage; public PercentageGrade(int grade) { this.percentage = grade; } @Override public int toPercent() { return percentage; } @Override public boolean isPass() { return toPercent() >= 40; } @Override public boolean includeInAverage() { return true; } @Override public String toString() { return "PercentageGrade: " + percentage + "%"; } } class PassFailGrade implements Grade { boolean isPass; public PassFailGrade(boolean grade) { this.isPass = grade; } @Override public int toPercent() { return isPass ? 70 : 30; } @Override public boolean isPass() { return isPass; } @Override public boolean includeInAverage() { return false; } @Override public String toString() { return "PassFailGrade: " + (isPass ? "Pass" : "Fail"); } }