Java 在方法中返回时出错

Java 在方法中返回时出错,java,Java,关于下面创建的toString()方法,我有一个非常简单的问题。如果words是一个包含{apple,banana,grape}内容的数组列表,我只是想知道该方法是否: public String toString() { for (int d = 0; d < words.size(); d++) { return "The word: " + words.get(d); } return ""; } 我问这个问题的原因是因为当我写这行时

关于下面创建的toString()方法,我有一个非常简单的问题。如果words是一个包含{apple,banana,grape}内容的数组列表,我只是想知道该方法是否:

public String toString()
{
    for (int d = 0; d < words.size(); d++)
    {
        return "The word: " + words.get(d);
    }
    return "";
}
我问这个问题的原因是因为当我写这行时:

return "";
我收到一个错误,表示缺少返回语句,因此我认为计算机可能无法识别返回语句:

"return "The word: " + words.get(d);"
而不是返回:

The word: apple
The word: banana
The word: grape
它将返回:

The word: apple
The word: banana
The word: grape
null or ""
我不确定这是否必要,但我也刚刚输入了在得到error missing return语句之前的代码

public String toString()
{
    for (int d = 0; d < words.size(); d++)
    {
        return "The word: " + words.get(d);
    }
}
公共字符串toString()
{
对于(int d=0;d
确切的错误是在第二个到最后一个封闭的括号内画了一条红线。确切的错误消息是:“缺少返回语句”

更新1:

我真的很感谢所有的帮助和建设性的批评的代码,我可以得到。我希望我没有把这个简单的问题变成一个太复杂的问题。非常感谢:)

更新2:


我很抱歉留了这么多便条。然而,我只是想知道这是否是你们中的任何一个人经常看到的一个常见问题,因为这似乎在课堂上经常出现,而助教无法回答这个问题。再次感谢:)

您只能从方法中返回一个
字符串,而不是您当前试图构造的单个
字符串。相反,使用类似于
StringBuilder
的工具来构建整个输出,并
返回一次

public String toString() {
    StringBuilder sb = new StringBuilder();
    for (int d = 0; d < words.size(); d++) {
        sb.append("The word: ").append(words.get(d)) //
                .append(System.lineSeparator());
    }
    return sb.toString();
}

您的方法似乎没有意义,因为它无法确定应该打印哪个水果,因此它正在对所有水果进行迭代。至于错误,编译器检测到如果不应该执行
for
循环,那么在该循环之后必须有一个return语句。删除
return”“
时,您破坏了代码。为什么要在循环中放入
return
语句?这意味着,第一次遍历循环时,从方法返回,而不会遍历循环的其余部分。返回一个值的方法只返回一个值;您认为该方法将如何返回三个不同的值?为了回答您最后的问题:(1)我在这里看到过其他几篇帖子,提问者用这样的“return”语句编写了一个循环,但不理解为什么它是错误的。(2) 任何不能回答这个问题的人都不应该是助教——至少在计算机科学课上是这样。(如果他们是英国文学的助教,我没问题。)@ajb我以为每次返回该方法的值时,该方法都会在整个循环中运行。@ajb我知道。助教的工作做得不太好。但是,教授是个天才,非常聪明。这似乎是一个很好的答案;但是我们还没有学习StringBuilder。有没有其他方法可以让我只返回一次。@SteveDav您不清楚希望您的方法返回什么。您只能返回一个
字符串
。你想让那个
字符串成为什么?这就是我最初想做的。但是,我们也没有学习LineSeparator。在windows上将其更改为
“\r\n”
,在其他所有操作上将其更改为
“\n”
public String toString() {
    String sb = "";
    for (int d = 0; d < words.size(); d++) {
        sb += "The word: " + words.get(d) + System.lineSeparator();
    }
    return sb;
}