我正在编写一种方法来返回数组中的特定记录,但是它引发了两个错误,并且我不确定如何解决。谁能解释我在做什么错?

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/

10-10 09:43