【发布时间】:2019-08-03 11:34:09
【问题描述】:
下面的方法需要返回字典中第一个姓氏的人的名字。在姓氏相同的情况下,该方法将比较人员的名字,并根据字典确定其中的名字。 例如 : 给定的名称:“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;
}
我认为这是解决方案,但由于某种原因,该方法总是返回数组中的最后一个人,而不是我需要的那个人。
【问题讨论】:
-
将
>0更改为<0。 -
换一种说法,
getLastName().compareToIgnoreCase(lastName)) > 0在此上下文中的意思是:如果此人的姓氏按字典顺序排在lastName之后,则更新lastName。这意味着结果总是按字典顺序排列的姓氏,而您想要相反的结果。
标签: java arrays string methods