Java 查找最高考试范围的问题
我有一个作业,要求我创建一个名为getExamRange的方法,该方法查看一个数组,其中包括几个学生的考试分数,取最低和最高分数,并从最高考试分数中减去最低考试分数。我还必须创建一个getMostImprovedStudent,它在一个学生数组上运行getExamRange方法,并返回具有最高考试范围的学生。当代码运行时,我很难得到正确的结果。是什么导致了这个问题 下面是Student.java类的代码:Java 查找最高考试范围的问题,java,Java,我有一个作业,要求我创建一个名为getExamRange的方法,该方法查看一个数组,其中包括几个学生的考试分数,取最低和最高分数,并从最高考试分数中减去最低考试分数。我还必须创建一个getMostImprovedStudent,它在一个学生数组上运行getExamRange方法,并返回具有最高考试范围的学生。当代码运行时,我很难得到正确的结果。是什么导致了这个问题 下面是Student.java类的代码: import java.util.*; public class 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;
/**
* 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;
}
}
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]);
}
}
}
import java.util.*;
公立班学生
{
私人静态最终整数考试=4;
私有字符串名;
私有字符串lastName;
私家一级;
私人双gpa;
私人考试;
努梅克斯塔克私人酒店;
/**
*这是一个构造函数。构造函数是一个方法
*它创建了一个对象--它创建了一个实例
*这意味着它接受输入
*参数并设置实例变量(或字段)
*以达到适当的值。
*
*查看StudentTester.java以了解如何使用
*这个构造函数。
*/
公立学生(字符串fName、字符串lName、整数年级)
{
firstName=fName;
lastName=lName;
等级=等级;
考试=新的整数[NUM_考试];
Numexamstake=0;
}
public int getExamRange()
{
数组。排序(检查);
int examcore1=考试[0];
int examcore2=0;
int-lastPos=0;
对于(int i=0;i
下面是教室.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;
}
}
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]);
}
}
}
公共课堂
{
学生[]学生;
国际学生会;
公共教室(国际学生)
{
学生=新生[numstudent];
numStudentsAdded=0;
}
公立学生获得最优惠学生()
{
int最高分=0;
智力得分=0;
int位置=0;
int finalLocation=0;
(学生:学生)
{
分数=s.getExamRange();
位置++;
如果(分数>最高分数)
{
最高分数=分数;
最终分配=地点;
}
}
留学生[最终分配-1];
}
公立学校学生(学生)
{
学生[numStudentsAdded]=s;
numStudentsAdded++;
}
公立学校学生()
{
for(int i=0;i
以下是分配的说明,说明了这些方法应该做什么:
以前面的学生和课堂为例,您应该填写方法getMostImprovedStudent,以及方法getExamRange。进步最大的学生是考试分数范围最大的学生。
要计算考试分数范围,必须从最高考试分数中减去最低考试分数。
例如,如果考试分数为90、75和84,则范围为90-75=15。首先让我们看看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;
}
public int getExamRange(){
如果(检查==null | |检查.长度==0){
返回0;
}
int min=考试[0];
int max=考试[0];
对于(int i:考试)
) {
if(imax){
max=i;
}
}
返回最大-最小值;
}
现在是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;
}
public Student getMostImprovedStudent()
{
if(students==null | | students[0]==null | | students.length=0){
返回null;
}
int highestScore=学生[0]。getExamRange();
智力得分=0;
Student mostImprovedStudent=学生[0]
对于(int i=0;i最高分)
{
最高分数=分数;
mostImprovedStudent=学生[i];
}
}
}
返回最优秀的学生;
}
您的输入是什么?你的产出是什么?你的预期产量是多少?它们有何不同?我的学校使用一个自动输入值并创建学生和教室对象的系统,但它只显示预期输出和实际输出的结果,而不显示输入。嘿@pcgamer235132试试下面我写的代码这不起作用,“检查范围”方法显示错误的值其中一个测试使用不完整的Student数组创建一个类,该数组显示错误“NullPointerException:您似乎引用了一个为null的变量”它仍然输出相同的错误:/I将编辑我的帖子以包括作业的方向,也许这会有帮助。请立即尝试@pcgamer2315132getMostImprovedStudent()现在可以正常工作,但getExamRange()仍然不能正常工作请记住,它现在显示的结果是正确的,我只需要对getExamRange()代码做一些小的更改,谢谢。