我会复制/粘贴作业,然后是我迄今为止所取得的进展。我真的不是在找人做任务,只有一些帮助指出我在哪里出错了?该程序正在运行而没有错误,但是当它只返回一个时,它会为学生返回多个结果。我可以修改成绩并让它产生不同的结果,所以我知道数学正在完成,但我不知道为什么它为一个学生提供多个(和不同的)结果。我一直在检查代码,无法确定我哪里出错了。我最好的猜测是它在OutputGrade方法中的某个地方,我找不到它。
说明:
使用以下实例变量创建名为student的Java类: •private String studentName; •private int []成绩; //一系列成绩 包括setter和getter方法来设置和获取这两个属性。 grade实例数组变量的setter方法 - setGrades() - 应该采用单个参数,该参数是已填充等级的int数组。如果使用语句确保每个等级值,则应使用setGrades()在数组参数中有效(介于0和100之间) - 您需要将一个循环与if语句结合使用才能有效地执行此操作。如果成绩超出范围,则setGrades()应将该成绩值设置为0.传递给setGrades()的数组必须保持3到5个等级。 包含一个名为outputGrade()的方法,该方法对学生成绩数组中的所有成绩进行平均,然后使用switch语句根据以下条件输出成绩转换: •对于0-59之间的值,您的程序应输出:“学生已失败此课程” •对于60-69的值,您的程序应输出:“学生获得D” •对于70-79的值,您的程序应输出:“学生获得C” •对于80-89的值,您的程序应输出:“学生获得B” •对于90-100的值,您的程序应输出:“学生获得A” “学生”是学生的实际名称。 创建一个名为TestStudent的测试类,它实例化3名学生并设置他们的名字和成绩,然后为每个学生调用outputGrade()。对于3名学生,1必须有3个等级,1个必须有4个等级,1个必须有5个等级。这样你将有3种不同的数组大小传递给setGrades()。确保对于1名学生,使用超出范围的1级值(小于0或大于100)调用setGrades()。
代码:
public class TestStudent {
public static void main(String[] args) {
Student student1 = new Student();
int[] grades1 = {15, 50, 5};
student1.setStudentName("Ernest Craft");
student1.setGrades(grades1);
student1.outputGrades();
Student student2 = new Student();
int[] grades2 = {95, 95, 95, 95};
student2.setStudentName("Steve Jones");
student2.setGrades(grades2);
student2.outputGrades();
Student student3 = new Student();
int[] grades3 = {105, -1, 72, 90, 88};
student3.setStudentName("Mary Smith");
student3.setGrades(grades3);
student3.outputGrades();
} // end method main
} // end class TestStudent
学生班:
public class Student {
private String studentName;
private int[] grades;
//constructor
public Student() {
}
public void setStudentName(String name) {
studentName = name;
} // end method setStudentName
public String getStudentName() {
return studentName;
} // end method getStudentName
public void setGrades(int gradeArray[]) {
grades = gradeArray;
for (int i = 0; i < gradeArray.length; i++) {
if (gradeArray[i] < 0 || gradeArray[i] > 100) {
gradeArray[i] = 0;
} // end if
} // end loop
} // end method setGrades
public int[] getGrades() {
return grades;
} // end method getGrades
public void outputGrades() {
int gradesTotal = 0;
int gradesAverage;
char letterGrade;
for (int i : grades) {
gradesTotal += i;
} // end loop
gradesAverage = gradesTotal / (grades.length);
if (gradesAverage >= 0 && gradesAverage <= 59) {
letterGrade = 'F';
} else if (gradesAverage >= 60 && gradesAverage <= 69) {
letterGrade = 'D';
} else if (gradesAverage >= 70 && gradesAverage <= 79) {
letterGrade = 'C';
} else if (gradesAverage >= 80 && gradesAverage <= 89) {
letterGrade = 'B';
} else {
letterGrade = 'A';
} // end if statement
switch (letterGrade) {
case 'A':
System.out.println(studentName + " gets an A.");
case 'B':
System.out.println(studentName + " gets an B.");
case 'C':
System.out.println(studentName + " gets an C.");
case 'D':
System.out.println(studentName + " gets an D.");
case 'F':
System.out.println(studentName + " gets an F.");
} // end switch
} // end method outputGrades
} // end class Student
谢谢你看看!
本
答案 0 :(得分:5)
您忘记了break
的{{1}}语句。如果你不是switch
,它就会一直执行所有操作,直到阻止结束!
这有点令人困惑&#34;功能&#34;是C的遗留物,在大多数情况下,您希望使用break
,case
或break
结束所有return
。