Как передать объект в качестве параметра в Java и сравнить значения некоторых его с другим объектом - PullRequest
0 голосов
/ 14 ноября 2018

Я студент APCS, и в настоящее время мы учимся строить классы. В приведенном ниже коде я написал большинство методов, которые нам нужны, такие как setGpa, setName и т. Д. Мне нужна помощь с последними методами, которые сравниваются с CompareToStudent. Этот метод предназначен для использования как s2.compareToStudent (s1). Таким образом, он должен взять gpa студента s1 и s2, сравнить их и напечатать, что выше. Я знаю, как сравнивать, используя>, <== и печатать строки. </p>

Мне нужна помощь о том, как передать s2 в качестве параметра и написать метод, который получает gpa объекта s1 и gpa объекта s2. Как передать объект в качестве параметра в этот метод, а затем использовать его для получения значений.

Пожалуйста, помогите. Спасибо!

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 голосов
/ 14 ноября 2018

Вы можете выполнить то, что вы хотите следующим образом:

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;
}
0 голосов
/ 14 ноября 2018

Вы можете реализовать свой метод следующим образом:

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 ссылается на текущий объект, для которого вызывается метод, используя который вы можете получить доступзначения хранятся в нем.

И другой объект ученика, который вы можете взять в качестве параметра, используя который вы можете сравнивать значения двух объектов и реализовывать вещи так, как вы хотите.

Также вам следуетвсегда генерируйте геттеры / сеттеры для переменных, которые вы объявляете закрытыми, чтобы к ним можно было получить доступ, используя их.Я реализовал getGPpa(), и вы можете увидеть его использование в методе compareToStudent

Наконец, метод main(String args[]) показывает, как вы можете вызвать метод и напечатать результаты.

0 голосов
/ 14 ноября 2018

Добро пожаловать и удачи в учебе. Метод compareToStudent должен принимать параметр Student. Примером параметра является newGrade в методе setGrade. Однако для compareToStudent параметр будет иметь тип Student. Если у вас есть это, метод compareToStudent может сравнивать значения полей из экземпляра Student, в котором он находится, и переданного в Student, например String.compare(this.name, student.name)

Если вы попробовали это, если вам нужна дополнительная помощь, обновите вопрос с помощью обновленного кода и более конкретных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...