gpt4 book ai didi

java - 对无法正确实现 CompareTo 方法的 addInOrder 方法进行故障排除

转载 作者:行者123 更新时间:2023-12-01 23:35:44 24 4
gpt4 key购买 nike

我必须使用此 addInOrder 方法将人员添加到我的 LinkedList 中,但按姓氏然后名字的字母顺序排列。一旦我将这个人添加到列表中,我必须返回 true 或 false,具体取决于它是否添加了它。我创建了一个compareTo 方法,如果两个条目具有相同的名字和相同的姓氏,则该方法返回0。如果姓氏按字母顺序排列在与之比较的对象之前,它将返回 -1(如果姓氏相同,则它会检查姓氏)。最后,如果名称按字母顺序排列在与之比较的对象之后,它将返回 1。我已经多次测试了compareTo方法并且可以确认它的工作原理。这是它的代码:

public int compareTo(PhoneDirectoryEntry other) {

if (this.firstName.equals(other.firstName) && this.lastName.equals(other.lastName)) {
return 0;
} else if (this.lastName.compareTo(other.lastName) < 0) {
return -1;
} else if (this.lastName.compareTo(other.lastName) > 0) {
return 1;
} else if (this.firstName.compareTo(other.firstName) < 0) {
return -1;
} else
return 1;
}
}

我的问题依赖于我的 addInOrder 方法。

public boolean addInOrder(String firstName, String lastName, String phoneNumber) {
//to be completed by you
if (list.isEmpty()) {
PhoneDirectoryEntry person = new PhoneDirectoryEntry(firstName, lastName, phoneNumber);
list.add(person);
return true;
} for (int i = 0; i < list.size(); i++) {
if (list.get(i).getLastName().compareTo(lastName) == -1) {
PhoneDirectoryEntry person = new PhoneDirectoryEntry(firstName, lastName, phoneNumber);
list.add(i, person);
return true;
} else if (list.get(i).getLastName().compareTo(lastName) == 1) {
PhoneDirectoryEntry person = new PhoneDirectoryEntry(firstName, lastName, phoneNumber);
list.add(i++, person);
return true;
}
}
return false;
}

我的第一个 if 语句运行得很好,并且总是能够将一个人添加到空列表中。 for 循环也运行。问题出在 if 语句中。我已经尝试了 if 语句的所有变体,例如:

list.get(i).getLastName().compareTo(lastName) == -1 || list.get(i).getFirstName().compareTo(firstName) == 1

但它们都不起作用。所以我只是坚持这条线。如果有人看到我的问题或需要更多信息,请告诉我。谢谢。

最佳答案

您的compareTo方法采用PhoneDirectoryEntry类,因此它将比较两个PhoneDirectoryEntry对象。您在 for 循环中所做的是获取 PhoneDirectoryEntry 类中的姓氏,并调用 string 的compareTo 方法。 String的compareTo方法是java实现的,而不是你的compareTo方法。

关于java - 对无法正确实现 CompareTo 方法的 addInOrder 方法进行故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58278032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com