作业如下:
一位老师有五名学生参加了四次考试。教师根据他或她的四个考试成绩的平均值,使用以下成绩等级为学生分配一个字母等级。
90-100: A
80-79: B
70-79: C
60-69: D
0-59: F
写一个在arraylist对象上使用String数组的类来保存五个学生的名字,一个包含五个字符的数组来保存五个学生的字母等级,以及五个数组,每个四个双数来保存每个学生的一组测试成绩。该课程应该有返回学生姓名,平均考试成绩和基于平均成绩的字母等级的方法。
在程序中演示课程,允许用户输入每个学生的姓名和他或她的四个考试成绩。然后它应该显示每个学生的平均考试成绩和字母等级。
程序不应接受低于0或高于100的分数
以下代码在此处:
学生班:
public class Student{
private String name;
private double[] test = new double[4];
public Student(){
name = " ";
}
public Student(String n, double[] t){
name = n;
test = t;
}
public void setName(String n)
{
name = n;
}
public String getName(){
return name;
}
public void setTest(double t,int i)
{
test[i] = t;
}
public double getTest(int i)
{
return test[i];
}
public double getTestAvg(){
double sum = 0;
double avg;
for(int i = 0; i < test.length; i++)
{
sum += test[i];
}
avg = sum / test.length;
return avg;
}
public char getLetterGrade(){
double average = getTestAvg();
char grade=0;
if(average >= 90)
grade = 'A';
else if (average >= 80)
grade = 'B';
else if (average >= 70)
grade = 'C';
else if (average >=60)
grade = 'D';
else if (average < 60)
grade = 'F';
return grade;
}
public String toString(){
String str = "";
str += "\nName of student: " + name;
str += "\nAverage test score: " + getTestAvg();
str += "\nLetter grade: " + getLetterGrade();
return str;
}
}
主程序:
import java.util.Scanner;
import java.io.*;
public class GradeBook {
public static void main(String[] args) throws IOException {
Student[] students = new Student[5];
getStudentData(students);
}
public static double getStudentData(Student[] array) {
Scanner scan = new Scanner(System.in);
String[] student = new String[5];
double[] test = new double[4];
for (int i = 0; i < student.length; i++) {
System.out.println("Enter the name of the student : ");
student[i] = scan.nextLine();
for (int j = 0; j < test.length; j++) {
System.out.println("Enter score " + (j + 1) + " for the student");
test[j] = scan.nextDouble();
scan.nextLine();
}
array[i] = new Student(student[i], test);
}
return 0;
}
}
问题是,我可以输入所有信息,但输入所有数字后都不显示任何信息。非常感谢任何帮助!
答案 0 :(得分:4)
您没有看到任何显示内容,因为您从未打过电话来显示任何内容。 您正在填充“数组”,因此您需要现在迭代它。
在外部for循环(第一个)之后,您将想要遍历填充的数组并打印出学生对象。这将起作用,因为你已经有了一个toString()方法。
例如:
for(Student student : array)
{
System.out.println(student);
}