Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java for-each循环中缺少return语句_Java_Return - Fatal编程技术网

Java for-each循环中缺少return语句

Java for-each循环中缺少return语句,java,return,Java,Return,我得到的错误是“缺少返回语句”,代码如下: public String getAuthorFullName(String title) { for (Book authorName : inventory) if (authorName.getTitle() != null) { return authorName.getAuthor().getName().getFullName(); } els

我得到的错误是“缺少返回语句”,代码如下:

public String getAuthorFullName(String title)
{
    for (Book authorName : inventory)
        if (authorName.getTitle() != null)
        {
            return authorName.getAuthor().getName().getFullName();
        } 
        else
        {
            return null;
        }
} 
我想返回o,返回用这个标题写这本书的作者的全名,如果没有这个标题的书,或者如果标题为null或“”,则返回null

我试着这样写代码:

public String getAuthorFullName(String title)
{
    for (Book authorName : inventory)
        if (authorName.getTitle() != null)
        {
            return authorName.getAuthor().getName().getFullName();
        }
        return null;
但它总是返回列表中的第一个作者


谁能帮帮我吗?非常感谢。

试试这样的东西

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

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

您的第一个案例缺少返回语句,因为它是。考虑有一个空清单。因此for循环不会运行,if语句或else语句也不会执行。然后就没有返回语句了

第二种情况下,返回语句不是for循环的一部分,因此是正确的java语法。但您只检查
getTitle()!=空
。对于每种情况,都会设置一个标题,即使它是空的

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

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

嗯,是的。。。你返回第一个,这就是它。您需要将
字符串标题
与任何内容进行比较,如果匹配,则返回该标题<代码>请查看循环的逻辑。为什么只返回第一个,这是有道理的。首先要做的是始终使用大括号作为循环,以使代码更清晰。例如,第二个代码块中的缩进表明
returnnull
在循环中,但它不是。使用大括号,生活会更加清晰。你可能会注意到你正在检查
!=空
且不适用于相同的
标题
。你可能也想检查一下。我还强烈建议你使用更有意义的名字——一本书和一个作者的名字不一样。你在第一段代码中得到了一个错误,因为目录可能是空的,所以if语句不会被执行。您需要将book.getTitle()与if语句中的方法参数title进行比较,以便不返回第一位图书作者
public String getAuthorFullName(String title) {
    for (Book authorName : inventory) {
        if (authorName.getTitle() != null && authorName.getTitle().equals(title)) {
            return authorName.getAuthor().getName().getFullName();
        } 
    }
    return null;
}