我有一个非常简单的问题,关于我在下面创建的以下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:
我很遗憾留下这么多笔记。然而,我只是想知道这是否是一个常见的问题,你们中的任何人都会看到很多,因为它似乎在课堂上出现了很多,教师助理不能回答这个问题。再次感谢:)
答案 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;
}