比较2个对象属性时的扫描仪输入

时间:2017-09-30 12:48:44

标签: java object java.util.scanner

我试图让用户输入名称,然后将其与文件中的名称进行比较。现在,我刚刚为我的第二个对象使用了一个固定名称用于测试目的。当我通过scanner输入与第二个对象完全匹配的第一个对象的值时,它返回false并打印我的else语句。它使用固定值,如下面的代码所示,但是当我取消注释扫描仪输入并输入“K”和“A”时,它不会。

    Scanner input = new Scanner(System.in);
    Member mem1 = new Member("K", "A");
    Member mem2 = new Member("K", "A", "--address--", "--email--", "Math", 123);    

    // System.out.println("Enter a first name: ");
    // mem1.setMemberFirstName(input.nextLine());
    // System.out.println("Enter a last name: ");
    // mem1.setMemberLastName(input.nextLine());

    System.out.println("do these objects match?: " + mem1.equals(mem2));

    if (mem1.equals(mem2)) {
        System.out.println(mem2.toString());
    } else
        System.out.println("No person of this name found");

1 个答案:

答案 0 :(得分:0)

感谢您的快速回复。我只是想出了自己,菜鸟的错误。我最初将此作为我的等于覆盖:

public boolean equals(Object obj) {
    if (!(obj instanceof Member))
        return false;
    Member mem1 = (Member) obj;
    return (memberFirstName == mem1.memberFirstName) && (memberLastName == mem1.memberLastName);
}
我现在可以看到

是一个错误,并在memberFirstName和memberLastName中将“==”更改为.equals。现在没问题。