Я создаю класс Course
, который представляет объект курса с тремя атрибутами, courseID
, letterGrade
и numberGrade
.Почему этот оператор switch не распознает subString?
numberGrade
рассчитано от letterGrade
использованием метода computeGrade()
. В настоящее время я тестирую свой класс Course
и обнаруживаю, что оператор switch, используемый в computeGrade
, не распознает соответствующий substring
.
Почему это происходит?
public void computeGrade() {
switch (letterGrade.substring(0,1)) {
case "A": numberGrade = 4.0;
case "B": numberGrade = 3.0;
case "C": numberGrade = 2.0;
case "D": numberGrade = 1.0;
case "F": numberGrade = 0.0;
default: numberGrade = 999;
}
if(letterGrade.endsWith("+") && !letterGrade.startsWith("A") && !letterGrade.startsWith("F")) {
numberGrade += 0.3;
}
else if(letterGrade.endsWith("-") && !letterGrade.startsWith("D") && !letterGrade.startsWith("F")) {
numberGrade -= 0.3;
}
}
Мой тестер петли через массив возможных сортов
public static void main(String[] args) {
String[] grades = {"A", "A-", "B+", "B", "B-", "C+", "C", "C-", "D+", "D", "F"};
Course course = new Course("COP2253", " ");
String toString;
for (int i = 0; i < grades.length; i++) {
course.updateGrade(grades[i]);
toString = course.toString();
System.out.println(toString + "\n");
}
со следующим выходом
COP2253 A 999.0
COP2253 A- 998.7
COP2253 B+ 999.3
COP2253 B 999.0
COP2253 B- 998.7
COP2253 C+ 999.3
COP2253 C 999.0
COP2253 C- 998.7
COP2253 D+ 999.3
COP2253 D 999.0
COP2253 F 999.0
P.S. Я совершенно уверен, что конструктор,
public Course(String courseID, String letterGrade) {
this.courseID = courseID;
this.letterGrade = letterGrade;
computeGrade();
}
updateGrade()
,
public void updateGrade(String grade) {
letterGrade = grade;
computeGrade();
}
и toString()
public String toString() {
String grade = courseID + "\t\t" + letterGrade + "\t" + numberGrade;
return grade;
}
не является проблемой.
Вы забыли добавить 'break;' заявления после каждого случая в вашем коммутаторе. Итак, независимо от того, что возвращает 'letterGrade.substring', вы всегда будете обращаться к случаю по умолчанию. –