如何在Java中将对象作为参数传递并将其某些值与另一个对象进行比较

时间:2018-11-14 18:13:58

标签: java drjava

我是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.
  } 
  }

3 个答案:

答案 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[])方法说明了如何调用该方法并打印结果。