【发布时间】:2016-06-07 16:31:35
【问题描述】:
对于一个课堂项目,我被要求创建三个代码。 学生班
-
首先,学生类包含三个参数。
- 名称(字符串)
- TestScores(int 数组),
- 等级(字符串)。
一个空的构造函数。将 Name 和 Grade 设置为空字符串。 TestScores 数组将用三个零初始化。
另一个构造函数(字符串 n,int[] 测试,字符串 g)- 这将设置
name、testScores和grade。-
三种方法:
-
getName()返回name -
getGrade()返回grade -
setGrade()设置grade -
getTestAverage()返回测试分数的平均值。
-
这是我遇到困难的地方方法
computeGrade(),如果平均值大于或等于65,则等级为“及格”。否则就是“失败”。
第二类称为UnderGrad。这个类是Student的子类。
我们必须创建一个空的构造函数和另一个构造函数 (
String n, int[] tests, String g)。我们被指示重写
computeGrade()方法,以便 UnderGrad() 学生必须获得 70 或更高才能通过。
第三个类是GradStudent Student 的一个子类。
我们必须创建1个实例变量
int MyGradID和一个调用super的空构造函数,并将ID设置为0。还有另一个构造函数
(String n, int[] tests, String g, int id)-记得调用超级构造函数并设置ID。我又遇到了挑战。我们必须编写方法
getId()来返回 ID 号。我们再次需要覆盖computeGrade()方法,如果平均值大于或等于65,则成绩为“及格”。否则就是“失败”。但如果测试平均分高于 90 分,则成绩应该是“优等生”。
我很难完成这项任务。我附上了GradStudent 代码。请问你能找出错误吗?我不完全理解如何覆盖超类私有实例变量。
public class GradStudent extends Student {
private int MyGradID;
public void GradStudent() {
super();
MyGradID = 0;
}
public void GradStudent(String n, int[] tests, String g, int id) {
super(n, tests, g);
MyGradID = id;
}
public int getId() {
return MyGradID;
}
@Override public void computeGrade() {
if (testScores.getTestAverage() >= 65) {
super.setGrade("Pass");
} else if (testScores.getTestAverage() > 90) {
grade = "Pass with distinction";
}
}
}
这是我的Student class。我不确定我是否正确引用了我的超级类,所以我添加了它。希望你能给我解释一下。
public class Student {
private String name;
private int[] testScores = new int[3];
private String grade;
public Student() {
name = "";
grade = "";
testScores[0] = 0;
testScores[1] = 0;
testScores[2] = 0;
}
public Student(String n, int[] tests, String g) {
name = n;
testScores = tests;
grade = g;
}
public String getName() {
return name;
}
public String getGrade() {
return grade;
}
public void setGrade(String newGrade) {
grade = newGrade;
}
public int getTestAverage() {
int average = 0;
int count = 0;
for (int testScore : testScores) {
count++;
average = average + testScore;
}
return average / testScores.length;
}
public void computeGrade() {
grade = "Fail";
if (this.getTestAverage() >= 65) {
grade = "Pass";
}
}
}
【问题讨论】:
-
请重新格式化您的问题,它很难阅读。
-
我认为
getTestAverage()在您的Student课程中没有任何问题,但count变量没有任何作用。它是递增的,然后从不使用。
标签: java arrays inheritance subclass superclass