有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

查找最高考试范围的java问题

我有一个作业,要求我创建一个名为getExamRange的方法,该方法查看一个数组,其中包括几个学生的考试分数,取最低和最高分数,并从最高考试分数中减去最低考试分数。我还必须创建一个getMostImprovedStudent,它在一个学生数组上运行getExamRange方法,并返回具有最高考试范围的学生。当代码运行时,我很难得到正确的结果。是什么导致了这个问题

这是学生的代码。java类:

import java.util.*;
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;

    /**
     * This is a constructor.  A constructor is a method
     * that creates an object -- it creates an instance
     * of the class. What that means is it takes the input
     * parameters and sets the instance variables (or fields)
     * to the proper values.
     * 
     * Check out StudentTester.java for an example of how to use
     * this constructor. 
     */
    public Student(String fName, String lName, int grade)
    {
        firstName = fName;
        lastName = lName;
        gradeLevel = grade;
        exams = new int[NUM_EXAMS];
        numExamsTaken = 0;
    }

    public int getExamRange()
    {
        Arrays.sort(exams);
        int examScore1 = exams[0];
        int examScore2 = 0;
        int lastPos = 0;
        for(int i = 0; i < exams.length - 1; i++)
        {
            lastPos++;
        }
        examScore2 = exams[lastPos];
        return examScore2 - examScore1;
    }

    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;
    }

    /**
     * This is a toString for the Student class. It returns a String
     * representation of the object, which includes the fields
     * in that object.
     */
    public String toString()
    {
        return firstName + " " + lastName + " is in grade: " + gradeLevel;
    }
}

这是教室的代码。java类:

public class Classroom
{
    Student[] students;
    int numStudentsAdded;


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

    public Student getMostImprovedStudent()
    {
        int highestScore = 0;
        int score = 0;
        int location = 0;
        int finalLocation = 0;
        for(Student s: students)
        {
            score = s.getExamRange();
            location++;
            if(score > highestScore)
            {
                highestScore = score;
                finalLocation = location;
            }
        }
        return students[finalLocation - 1];
    }

    public void addStudent(Student s)
    {
        students[numStudentsAdded] = s;
        numStudentsAdded++;
    }

    public void printStudents()
    {
        for(int i = 0; i < numStudentsAdded; i++)
        {
            System.out.println(students[i]);
        }
    }
}

以下是分配的说明,说明了这些方法应该做什么:

以前面的学生和课堂为例,您应该填写方法getMostImprovedStudent,以及方法getExamRange。进步最大的学生是考试分数范围最大的学生

要计算考试分数范围,必须从最高考试分数中减去最低考试分数

例如,如果考试分数为90、75和84,则范围为90-75=15


共 (1) 个答案

  1. # 1 楼答案

    首先让我们看看getExamRange函数

    public int getExamRange(){
            if(exams == null ||exams.length == 0){
               return 0;
             }
            int min = exams[0];
            int max = exams[0];
            for (int i : exams
                 ) {
                if(i<min){
                    min=i;
                }
                if(i>max){
                    max=i;
                }
            }
            return max - min;
        }
    

    现在是getMostImprovedStudent

    public Student getMostImprovedStudent()
        {
            if(students == null ||students[0] == null || students.length=0){
               return null;
            }
            int highestScore = students[0].getExamRange();
            int score = 0;
            Student mostImprovedStudent = students[0]
            for(int i=0;i<students.length;i++)
            {
                if(students[i]!=null){
                   score = students[i].getExamRange();
                if(score > highestScore)
                {
                    highestScore = score;
                    mostImprovedStudent = students[i];
                }
              }
    
            }
            return mostImprovedStudent;
        }