我创建一个类Course
代表有三个属性的课程对象courseID
,letterGrade
和numberGrade
.
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
PS我相当肯定构造函数,
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; }
不是问题.