Las matrices de Java y referenciar

JenkinsMa:

Como parte del plan de estudios en mi escuela, estamos trabajando en algunos CodeHS Java. Hay un problema que estoy atascado en:

Tomando nuestro ejemplo los estudiantes y salones de antes, hay que rellenar el método getMostImprovedStudent, así como el método de getExamRange. El estudiante que más ha mejorado es el que tiene el mayor rango de puntuación del examen.

Para calcular el rango de puntuación de examen, se debe restar la puntuación del examen mínimo de la puntuación máxima del examen.

Por ejemplo, si los resultados del examen eran 90, 75, y 84, el rango sería 90 - 75 = 15.

Esta es la clase de estudiante que he añadido mi método getExamRange().

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;
    public static int[] examRange = new int[Classroom.numStudentsAdded];
    private int i = 0;

    /**
     * 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);
        examRange[i] = exams[exams.length-1] - exams[0];
        i++;
        return exams[exams.length-1] - exams[0];
    }

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

Y esta es la clase de aula en la que he añadido el método getMostImprovedStudent().

import java.util.*;

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

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

    public Student getMostImprovedStudent()
    {
        Arrays.sort(Student.examRange);
        //return Student.examRange[0];
    }

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

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

Puedo conseguir el examen de Campo por la clasificación del conjunto exámenes luego restando el más pequeño de los más grandes, pero una vez que hago esto, ¿cómo puedo encontrar el estudiante con la gama más grande de examen, y devolverlo?

GBlodgett:

La forma en que esto se haría a través de un bucle students, y tiene una variable para contener la mayor diferencia en la puntuación, y el estudiante que más ha mejorado:

public Student getMostImprovedStudent()
{
    Student mostImproved = students[0];
    int biggest = student[i].getExamRange();
    for(int i = 1; i < students.length; i++) {
        if(students[i].getExamRange() > biggest) {
            mostImproved = students[i];
            biggest = students[i].getExamRange();
        }
    }
    return mostImproved;
}

Sin embargo Java 8+ que podemos hacer:

public Student getMostImprovedStudent()
{
    return Arrays.stream(students)
                 .max(Comparator.comparing(Student::getExamRange))
                 .get();                     
}

¿Qué es suponiendo que studentsno está vacía

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=200343&siteId=1
Recomendado
Clasificación