-1

オブジェクトのコレクションを検索して、読み込んだ文字列に一致する「name」変数が含まれているオブジェクトを見つける必要があります。各Studentオブジェクトは次のようになります。

public Student(String name, String class)
{
    this.name = name;
    this.class = class;
}

.equals()また、オブジェクトの比較を行うために、employeeクラスで このメソッドを作成しました。

public boolean equals(Student student)
{
    return this.name.equals(student.name); 
}

メインクラスでは、生徒の名前をStudentオブジェクトに変換し、.equals()メソッドを使用して他の各生徒と比較します。

public static void loadStudentProjects(ArrayList students)
Student currentStudent;
String studentName = "name";

  while (count < students.size())
  {
    currentStudent = Students.create(studentName); 
 //The Student object is initialized as (name, null)

System.out.println(currentStudent.equals(students.get(count)));
count++;

このコードは、最初の比較で名前が一致するはずだとわかっていても、すべての比較でfalseを返します。比較している文字列名をオブジェクトに変換してメソッドを使用する必要があると言われましたが.equals()、それを機能させる方法が見つかりません。

4

2 に答える 2

10

equalsメソッドをオーバーライドするのではなく、オーバーロードしています。それはもっと似ているはずです

public boolean equals(Object o) {
    ...
}

あなたの場合、任意のオブジェクトが学生oと等しいかどうかを確認するには、this

  1. oそれが実際にStudentインスタンスであることを確認してください。
  2. 1が真であると仮定して、それを確認し、o名前thisを付けます。

だからあなたはの線に沿って何かを試すことができます

(o instanceof Student) && name.equals(((Student) o).name)
于 2013-03-04T23:45:07.093 に答える
0

代わりに(または)equalsを使用することをお勧めします:compareTocompareToIgnoreCase

public int compareTo(Student s) {
    return this.name.compareTo(s.name);
}

compareTo文字列が等しく、数値が他の場合0 と異なる場合に戻ります。0

オブジェクトと比較するにStudentは、次のようなものを使用できます。

public void aMethod(ArrayList students) {
    Student aStudent;
    int count;
    count = 0;

    aStudent = newStudent("name", "class") // Construct the Student object with the appropriate parameters
    for (Student s : students) {
        if s.compareTo(aStudent) == 0 {
            // Do something
        }
    }
}

これがお役に立てば幸いです

于 2013-03-04T23:50:30.820 に答える