我正在编写一种方法来返回数组中的特定记录,但是它引发了两个错误,并且我不确定如何解决。谁能解释我在做什么错?
public String find(String searchName)
{ // ERROR - MISSING RETURN STATEMENT
Iterator<TelEntry> iterator = Directory.entries.iterator();
boolean hasFound = false;
while (iterator.hasNext())
{
TelEntry entry = iterator.next();
if (entry.name.equalsIgnoreCase(searchName)) {
return entry.name + entry.telNo;
hasFound = true; // ERROR UNREACHABLE STATEMENT
}
}
if (hasFound==false)
{
System.out.println("sorry, there is noone by that name in the Directory. Check your spelling and try again");
}
}
谁能解释我做错了什么?
最佳答案
您遇到的基本问题是,当找不到匹配项时,就没有return语句。通常,在这种情况下,方法将返回null
,但是您可能希望返回searchName
,甚至是错误消息-它取决于方法的意图/合同(未说明)。
但是,您遇到的另一个问题是您的代码对于执行的操作来说太复杂了,尤其是hasFound
变量是完全无用的。
将您的代码更改为此,它执行完全相同的操作,但表示更优雅:
public String find(String searchName) {
for (TelEntry entry : Directory.entries) {
if (entry.name.equalsIgnoreCase(searchName)) {
return entry.name + entry.telNo;
}
}
System.out.println("sorry, there is noone by that name in the Directory. Check your spelling and try again");
return null; // or return "searchName", the error message, or something else
}
关于java - 在数组列表中搜索Java中的特定记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13102626/