【问题标题】:Getting Top Student and calculating average score获得优等生并计算平均分
【发布时间】:2018-06-28 05:02:52
【问题描述】:

我们得到了 Java 类 Student、类 Randomizer 和类 Classroom。 我们被告知要填写 getTopStudent 和 getAverageScore 的方法。

下面我列出了 Student、Classroom 和 ClassroomTester 的类。

问题:当我运行它时,编译器出错。

我不明白为什么会出错...我没有忘记分号,我不确定他们所说的“非法开始表达”是什么意思

public class Student
{
    private static final int NUM_EXAMS = 4;
    
    private String firstName;
    private String lastName;
    private int gradeLevel;
    private double gpa;
    
    private int[] exams;
    private int numExamsTaken;

  
    public Student(String fName, String lName, int grade)
    {
        firstName = fName;
        lastName = lName;
        gradeLevel = grade;
        exams = new int[NUM_EXAMS];
        numExamsTaken = 0;
    }
    
    public double getAverageScore()
    {
        int sum = 0;
        for(int i = 0; i < exams.length;i++)
        {
            sum+=exams[i];
        }
        return (double)sum/numExamsTaken;
    }
    
    public String getName()
    {
        return firstName + " " + lastName;
    }
    
    public void addExamScore(int score)
    {
        exams[numExamsTaken] = score;
        numExamsTaken++;
    }
    
    // This is a setter method to set the GPA for the Student.
    public void setGPA(double theGPA)
    {
        gpa = theGPA;
    }
    
 
    public String toString()
    {
        return firstName + " " + lastName + " is in grade: " + gradeLevel;
    }
}

public class Classroom
{
    Student[] students;
    int numStudentsAdded;
    
    public Classroom(int numStudents)
    {
        students = new Student[numStudents];
    
    public Student getTopStudent()
    {
        double max = students[0].getAverageScore();
        String topstudent = students[0].getName();
        for (int i = 0; i < students.length; i++) 
        {
           if (students[i].getAverageScore() > max) 
           {
               max = students[i].getAverageScore();
               topstudent = students[i];
           }
        }  
        return topstudent;
    }
    public void addStudent(Student s)
    {
        students[numStudentsAdded] = s;
        numStudentsAdded++;
    }
    
    public void printStudents()
    {
        for(int i = 0; i < numStudentsAdded; i++)
        {
            System.out.println(students[i]);
        }
    }
}

public class ClassroomTester extends ConsoleProgram
{
    public void run()
    {
        Classroom c = new Classroom(2);
        
        Student ada = new Student("Ada", "Lovelace", 12);
        ada.addExamScore(44);
        ada.addExamScore(65);
        ada.addExamScore(77);

        Student alan = new Student("Alan", "Turing", 11);
        alan.addExamScore(38);
        alan.addExamScore(24);
        alan.addExamScore(31);

        // add students to classroom
        c.addStudent(ada);
        c.addStudent(alan);
        c.printStudents();
        
        Student topStudent = c.getTopStudent();
        System.out.println(topStudent);
    }
}

【问题讨论】:

    标签: java arrays class methods


    【解决方案1】:

    你错过了一个结束{

    public Classroom(int numStudents)
        {
            students = new Student[numStudents];
    

    【讨论】:

      【解决方案2】:

      将 Classroom 的构造函数更改为

              public Classroom(int numStudents)
      {
          students = new Student[numStudents];
      
      }
      

      您在 Classroom 的构造函数中缺少右括号 }。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-25
        相关资源
        最近更新 更多