Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用.equals()比较两个对象';s变量_Java_Object_Equals - Fatal编程技术网

Java 使用.equals()比较两个对象';s变量

Java 使用.equals()比较两个对象';s变量,java,object,equals,Java,Object,Equals,我需要搜索一组对象,并找到哪个对象包含与我读入的字符串匹配的“name”变量。以下是每个学生对象的外观: public Student(String name, String class) { this.name = name; this.class = class; } 我还在employee类中编写了这个.equals()方法来进行对象比较 public boolean equals(Student student) { return this.name.equal

我需要搜索一组对象,并找到哪个对象包含与我读入的字符串匹配的“name”变量。以下是每个学生对象的外观:

public Student(String name, String class)
{
    this.name = name;
    this.class = class;
}
我还在employee类中编写了这个
.equals()
方法来进行对象比较

public boolean equals(Student student)
{
    return this.name.equals(student.name); 
}
在我的主课上,我将学生的名字转换成
student
对象,并使用
.equals()
方法将is与其他学生进行比较

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++;
publicstaticvoidloadstudentprojects(arrayliststudents)
学生;
String studentName=“name”;
while(count
即使我知道第一次比较应该显示名称的匹配项,此代码每次比较都返回false。有人告诉我需要将要比较的字符串名称转换为对象,并使用
.equals()
方法,但我找不到使其工作的方法。

您正在重载equals方法,而不是重写它。它应该更像

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

在您的情况下,要检查任意对象
o
是否等于
this
student,您需要

  • 检查
    o
    是否确实是
    Student
    实例
  • 假设1为真,检查
    o
    this
    是否有名称
  • 所以你可以尝试一些类似于

    (o instanceof Student) && name.equals(((Student) o).name)
    

    我建议您使用
    compareTo
    (或
    compareTignoreCase
    )而不是
    equals

    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
            }
        }
    }
    

    希望这对您有所帮助

    请确保您的代码已编译。您不能使用“类”作为参数名,请粘贴完整的函数
    loadStudentProjects
    。另外,为什么在
    Employee
    class?Typo中为
    Student
    设置了
    .equals
    ?这是始终使用
    @Override
    注释的一个很好的原因。也许提供一些信息以便OP可以使用
    equals
    重载ed方法,因为它看起来很混乱:这个问题特别说要使用.equals(),但我无法确定这样做的方法。这个问题特别说要使用.equals(),但我无法确定这样做的方法。@DexterPeters这就是为什么第一行暗示它是一个建议
    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
            }
        }
    }