2017-02-15 62 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