我会复制/粘贴作业,然后是迄今取得的进展。我真的不想找人做这项工作,只有一些帮助,指出我正确的方向,我要去哪里错了?该程序运行时没有错误,但它只是返回一个学生返回的多个结果。我可以修改成绩,并让它产生不同的结果,所以我知道数学正在完成,但我不知道为什么它会给单个学生提供多个(和不同的)结果。我一直在检查代码,无法确定我要出错的地方。我最好的猜测是它在OutputGrade方法的某个地方,我找不到它。寻求协助赋值平均数组
说明:
创建一个名为学生有下列实例变量的Java类: •私人字符串studentName; •private int []等级; //数组 包含setter和getter方法来设置和获取这2个属性。等级实例数组变量 - setGrades()的setter方法应该采用单个参数,该参数是一个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名学生,setGrades()被调用1级值超出范围(小于0或大于100)。
代码:
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
Student类:
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
感谢您抽空看看!
本
小费,除非需要'switch'。你的'case'主体都是相同的减一个字符不同的(你有'letterGrade'的形式,所以你可以简单地用'System.out.println(新的StringBuilder())替换整个'switch'。append(studentName).append(“gets an”).append(letterGrade).append(“。”));' –
你有一个好主意,但是这个任务的参数需要一个开关。尽管如此,我将把它归档以备后用。谢谢! – user3533863