返回方法时出错

时间:2017-02-15 04:58:26

标签: java

我有一个非常简单的问题,关于我在下面创建的以下toString()方法。如果单词是一个包含{apple,banana,grape}内容的arrayList,我只是想知道方法是否正确:

public String toString()
{
    for (int d = 0; d < words.size(); d++)
    {
        return "The word: " + words.get(d);
    }
    return "";
}

将返回:

The word: apple
The word: banana
The word: grape

我问这个问题的原因是因为当我忽略了这一行:

return "";

我收到一条错误,说错过了return语句,所以我认为计算机可能没有识别return语句:

"return "The word: " + words.get(d);"

而不是返回:

The word: apple
The word: banana
The word: grape

它将返回:

null or ""

我不确定这是否有必要,但是我还在输入错误之前输入了我的错误返回语句。

public String toString()
{
    for (int d = 0; d < words.size(); d++)
    {
        return "The word: " + words.get(d);
    }
}

确切的错误是一条红线,在第二个到最后一个封闭的括号内圈出来。确切的错误消息是:&#34;错过了一个返回语句&#34;

更新1:

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

更新2:

我很遗憾留下这么多笔记。然而,我只是想知道这是否是一个常见的问题,你们中的任何人都会看到很多,因为它似乎在课堂上出现了很多,教师助理不能回答这个问题。再次感谢:)

1 个答案:

答案 0 :(得分:1)

您只能从您的方法返回一个String,而不是您当前正在尝试构建的个人String。相反,请使用StringBuilder之类的内容来构建整个输出,并return一次。

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

效率较低(但仍然是StringBuilder,只有许多临时和不可见的)

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