java - 方法返回错误

标签 java

我有一个关于我在下面创建的以下 toString() 方法的非常简单的问题。如果words是一个包含{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 ""

我不确定这是否有必要,但我也刚刚输入了在出现缺少 return 语句错误之前的代码。

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

确切的错误是一条红线围绕着倒数第二个闭括号。确切的错误消息是:“缺少返回语句”

更新1:

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

更新2:

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

最佳答案

您只能从您的方法返回一个String,而不是您当前尝试构造的单个String。相反,请使用 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();
}

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

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

关于java - 方法返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42241054/

相关文章:

Java KeyListener 是延迟注册

java - 无法在项目 nextrtc-signaling-serverrror 上执行目标 org.codehaus.mojo :exec-maven-plugin:1. 5.0:java (default-cli)

java - 具体如何测试? (单元测试、JUnit、PhpUnit)

java - Appium - 如何获取 Android ScrollView 中的所有 View

java - 在java中的文件中向后跳

java - TreeMap节点分配后为空

java - “if” 语句与 OO 设计 - 2

c# - Vb.Net 的 with java 中的关键字?

java - 直接运行 Java 小程序(无 html 页面)

java - 为什么 EJB 无状态 session bean 不能实现 SessionSynchronization?