gpt4 book ai didi

java - 这个字符串比较方法有问题

转载 作者:行者123 更新时间:2023-11-30 05:44:12 25 4
gpt4 key购买 nike

以下方法需要返回字典中姓氏排在第一位的人的姓名。如果姓氏相同,该方法将比较人员的名字,并根据字典确定其中哪个具有名字。例如 :名字:“dan”、“coco”、“rocky”。将返回名称“coco”,因为字典中“c”位于“d”之前。方法是:

 public String firstPerson()
{
String lastName=_persons[0].getLastName();
String firstName=_persons[0].getFirstName();
String answer=_persons[0].getFirstName();
for(int i=0;i<_numOfPersons;i++)
{
if((_persons[i].getLastName().compareToIgnoreCase(lastName))>0)
{
lastName=_persons[i].getLastName();
answer=_persons[i].getFirstName();
}
else if((_persons[i].getLastName().compareToIgnoreCase(lastName))==0)
{
if((_persons[i].getFirstName().compareToIgnoreCase(firstName))>0)
answer=_persons[i].getFirstName();
}
}
return answer;
}

我认为这是解决方案,但由于某种原因,该方法总是返回数组中的最后一个人,而不是我需要的人。

最佳答案

本质上,您正在尝试通过复合比较器找到最小值。不用自己实现这个,只需让 Java 的流和比较器为您完成繁重的工作:

public String firstPerson() {
return Arrays.stream(persons)
.min(Comparator.comparing(Person::getLastName,
String.CASE_INSENSITIVE_ORDER)
.thenComparing(Person::getFirstName,
String.CASE_INSENSITIVE_ORDER))
.orElse(null);
}

关于java - 这个字符串比较方法有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55130910/

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