我将复制/粘贴作业,然后复制到目前为止的进度。我的确不是要找人去做作业,而只是寻求一些帮助,以使我朝着正确的方向指出正确的方向?该程序正在运行,没有错误,但是当它仅应返回一个学生时,它将为学生返回多个结果。我可以修改成绩并产生不同的结果,所以我知道数学已经完成,但是我不知道为什么它会给单个学生提供多个(不同的)结果。我一直在检查代码,无法确定我要去哪里。我最好的猜测是它在OutputGrade方法中的某个地方,我只是找不到它。
说明:
使用以下实例变量创建一个名为Student的Java类:
•私有字符串studentName;
•私人int []级; //一系列成绩
包括setter和getter方法来设置和获取这两个属性。成绩实例数组变量setSetes()的setter方法应采用单个参数,该参数是一个已填充成绩的int数组。setGrades()如果要确保每个成绩值都应使用语句,则应使用setGrades() array参数中的有效值(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
谢谢参观!
本
最佳答案
您忘记了break
中的switch
语句。如果不使用break
,它将一直执行所有操作,直到代码块结束!
这个有点令人困惑的“功能”是C的遗留物,在大多数情况下,您都希望以case
,break
或return
结尾所有throw
。
关于java - 寻求协助以平均分配一系列成绩,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23071638/