每个循环中缺少一个返回语句

时间:2015-12-11 06:59:21

标签: java return

我使用以下代码收到错误“Missing return statement”:

public String getAuthorFullName(String title)
{
    for (Book authorName : inventory)
        if (authorName.getTitle() != null)
        {
            return authorName.getAuthor().getName().getFullName();
        } 
        else
        {
            return null;
        }
} 

我想返回o返回通过此标题编写书籍的作者的全名,如果没有带有此标题的书籍,或者如果title为null或“”,则返回null。

我试着把代码放到这样:

public String getAuthorFullName(String title)
{
    for (Book authorName : inventory)
        if (authorName.getTitle() != null)
        {
            return authorName.getAuthor().getName().getFullName();
        }
        return null;

但它总是返回列表中的第一个作者......

是的,有人能帮帮我吗?非常感谢。

3 个答案:

答案 0 :(得分:2)

尝试这样的事情

public String getAuthorFullName(String title)
{
    for (Book authorName : inventory) {
        if (authorName.getTitle() != null && authorName.getTitle().equals(title)) {
            return authorName.getAuthor().getName().getFullName();
        }
    }
    return null;
}

并始终使用大括号。没有它们,与它们生活在一起要容易得多。

答案 1 :(得分:0)

你的第一个案例是错过了一个返回语句,因为它是。考虑有一个空库存。因此for循环不会运行,也不会执行if语句或else语句。然后没有回复声明。

你的第二种情况有一个return语句,它不是for循环的一部分,因此是一个正确的java语法。但是你只检查getTitle() != null。这就是每个案例都设置了标题,即使它是空的。

使用String.equals(String another)检查字符串是否相等。所以你真正想做的是:

public String getAuthorFullName(String title){
    for (Book authorName : inventory)
        if (authorName.getTitle() != null && authorName.getTitle().equals(title))
            return authorName.getAuthor().getName().getFullName();
    return null;
}

答案 2 :(得分:0)

<datebox value="@bind(vm.myDate)" format="d/M/yyyy hh:mm"/>