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;
}