我是APCS的学生,目前我们正在学习开设课程。在下面的代码中,我已经写了我们需要的大多数方法,例如setGpa,setName等。我需要最后一个方法compareToStudent的帮助。该方法旨在用于s2.compareToStudent(s1)。因此,应该取学生s1和s2的gpa进行比较,然后打印出更高的值。我知道如何使用>,<==和打印行进行比较。
我需要有关如何将s2作为参数以及编写方法来获得s1对象的gpa和s2对象的gpa的帮助。如何将对象作为参数传递给该方法,然后如何使用它来获取值。
请帮助。谢谢!
import java.util.*;
public class Student
{
//Private Variables (Available throughout Class)
private String firstName;
private String lastName;
private int grade;
private double gpa;
private int studentID;
Random rn = new Random();
public Student(String lName, String fName, int classGrade)
//Parameter
Constructor
{
lastName= lName;
firstName=fName;
grade=classGrade;
gpa=0.0;
studentID=rn.nextInt(201850)+201806;
}
public Student() //Default Constructor
{
firstName=null;
lastName=null;
grade = 9;
gpa = 0.00;
studentID=rn.nextInt(201850)+201806;
}
public void printStudentInfo()
{
System.out.println("Student Information");
System.out.println("Name : " +firstName+" "+lastName);
System.out.println("Grade : " +grade);
System.out.println("Gpa : " +gpa);
System.out.println("Student ID : " +studentID);
System.out.println();
}
public void setGpa(double newGpa)
{
gpa=newGpa;
}
public void setName(String newlastName, String newfirstName)
{
firstName=newfirstName;
lastName=newlastName;
}
public void setGrade(int newGrade)
{
grade=newGrade;
}
// Challenge Methods ///////////////////////
public void printGrad()
{
System.out.println("Here's the graduation status :");
if(grade==9)
System.out.println(firstName+ " " +lastName+ " is expected to graduate in
4 years.)");
if(grade==10)
System.out.println(firstName+ " " +lastName+ " is expected to graduate in
3 years.");
if(grade==11)
System.out.println(firstName+ " " +lastName+ " is expected to graduate in
2 years.");
if(grade==12)
System.out.println(firstName+ " " +lastName+ " is expected to graduate
this year.");
}
public void compareToStudent()
{
//NEED HELP HERE.
}
}
答案 0 :(得分:0)
欢迎您,并祝您学习顺利。
compareToStudent方法需要采用一个Student参数。参数的一个示例是setGrade方法中的newGrade。但是,对于compareToStudent而言,该参数的类型为Student。
一旦有了该属性,compareToStudent方法就可以比较来自它所在的Student实例和传入的Student中的字段值,例如String.compare(this.name, student.name)
尝试过后,如果需要更多帮助,请使用更新的代码和更具体的问题来更新问题。
答案 1 :(得分:0)
您可以像这样完成您想要的事情:
public void compareToStudent(Student other) {
System.out.println("This student: " + getGPA());
System.out.println("Parameter student: " + other.getGPA());
if (other.getGPA() > getGPA()) {
// Do stuff
}
}
我们将另一个Student
对象传递给此方法,并且可以通过other.whatevermethod
访问方法并对其进行处理。
我还添加了一个名为getGPA()
的函数,就是这样:
public int getGPA() {
return grade;
}
答案 2 :(得分:0)
您可以像这样实现您的方法,
public void compareToStudent(Student otherStudent) {
if (this.getGpa() < otherStudent.getGpa()) {
System.out.println("Other student has a higher gpa");
} else if (this.getGpa() > otherStudent.getGpa()) {
System.out.println("Other student has a lower gpa");
} else {
System.out.println("Both students have same gpa");
}
}
public double getGpa() {
return gpa;
}
public static void main(String args[]) {
Student student1 = new Student("Tyson", "Mike", 8);
Student student2 = new Student("Reid", "Bruce", 7);
student1.setGpa(4.0); // Set the gpas for both students or you could create one more parameter in your constructor class for taking gpa
student2.setGpa(4.5);
student1.compareToStudent(student2);
}
在类中实现实例方法时,this
指向在其上调用该方法的当前对象,您可以使用该对象访问存储在其中的值。
您可以将其他学生对象用作参数,使用该对象可以比较两个对象的值并以所需的方式实现。
此外,您应该始终为声明为私有的变量生成getter / setter,以便可以使用它们进行访问。我已经实现了getGPpa()
,您可以在方法compareToStudent
最后main(String args[])
方法说明了如何调用该方法并打印结果。