我试图让用户输入名称,然后将其与文件中的名称进行比较。现在,我刚刚为我的第二个对象使用了一个固定名称用于测试目的。当我通过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");
答案 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。现在没问题。