2017-02-15 72 views
0

回到我有,我下面创建以下toString()方法很简单的问题。如果字是{苹果,香蕉,葡萄}的内容的ArrayList中,我只是wonderning如果方法:错误的方法

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

确切的错误是一个红色的线,第二个到最后一个圆括号。确切的错误信息是:“缺少return语句”

更新1:

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

更新2:

我离开那么多的音符遗憾。然而,我只是想知道这是否是一个常见的问题,你们中的任何一个人看到了很多,因为在课堂上这似乎很多,教师助理不能回答这个问题。再次感谢:)

+0

你的方法似乎没有什么意义,因为它无法弄清楚_which_果它应该正在印刷,因此它正在迭代所有这些。至于错误,编译器检测到如果'for'循环不应该执行,那么在循环之后必须有一个return语句。当你删除'回报“”',你打破了代码。 –

+0

你为什么要在循环中放置一个return语句?这意味着,你第一次去通过循环,你从方法返回,你永远不通过循环的休息去吧。返回值的方法只返回一个值;你是怎么想到的方法是要返回三个不同的值? – ajb

+0

回答你最后的问题:(1)我在这里看到了其他几个帖子,提问者用这样的“返回”语句编写了一个循环,并且不明白为什么它是错误的。 (2)不能回答这个问题的人不应该是教学助理 - 至少在计算机科学课上。 (如果他们的英语点亮TA这是我OK。) – ajb

回答

1

您只能从您的方法中返回一个String,而不是您目前尝试构建的个人String(s)。相反,使用像一个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; 
} 
+0

这似乎是一个非常好的答案;但是我们还没有学习StringBuilder。 –

+0

有没有不同的方式可以做到这一点,我只返回一次。 –

+0

@SteveDav你不清楚你想要什么方法返回。你只能返回一个'String'。你想要那个'String'是什么? – ajb