gpt4 book ai didi

Java 数组和引用

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:19:53 25 4
gpt4 key购买 nike

作为我学校类(class)的一部分,我们正在研究一些 CodeHS Java。我遇到了一个问题:

Taking our Student and Classroom example from earlier, you should fill in the method getMostImprovedStudent, as well as the method getExamRange. The most improved student is the one with the largest exam score range.

To compute the exam score range, you must subtract the minimum exam score from the maximum exam score.

For example, if the exam scores were 90, 75, and 84, the range would be 90 - 75 = 15.

这是我添加方法 getExamRange() 的 Student 类。

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

这是我在其中添加方法 getMostImprovedStudent() 的 Classroom 类。

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

我可以通过对 exams 数组进行排序然后从最大的减去最小的来获得考试范围,但是一旦我这样做,我如何找到考试范围最大的学生并返回它?

最佳答案

这样做的方法是遍历 students,并用一个变量来保存分数差异最大的学生和进步最快的学生:

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

但是 Java 8+ 我们可以做到:

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

假设 students 不为空

关于Java 数组和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53660765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com