2017-02-15 7 views
0

下記のtoString()メソッドについて、非常に簡単な質問があります。メソッド内での返り値のエラー

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 

私はこの質問が尋ねる理由は言葉が{りんご、バナナ、ブドウ}の内容とArrayListのであればこの方法があれば、私はちょうどwonderningました私はラインommitedときので:

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

正確なエラーは、2番目から最後の閉じた括弧を丸で囲んだ赤い線です。正確なエラーメッセージがあった。

Update 1の「return文が欠落」:

私は本当にすべてのヘルプと私が得ることができるコードの建設的な批判を感謝しています。私はこの簡単な質問を複雑すぎるものにしていないことを願っています。ありがとうございました:)

アップデート2:

私は非常に多くのメモを残すため申し訳ありません。しかし、私はこれがよくある質問であるかどうか疑問に思っていました。なぜなら、これはクラスでたくさん出てくるように見えますし、教師のアシスタントはその質問に答えることができないからです。もう一度ありがとう:)

+0

それはそれが必要_which_果物を把握することはできませんので、あなたの方法は、意味をなすようには見えません印刷されているので、それらのすべてを反復処理しています。このエラーに関して、コンパイラは、 'for'ループが実行されるべきでない場合、そのループの後にreturn文がなければならないことを検出しました。あなたが 'return" ''を削除すると、コードが破られました。 –

+0

ループの中に 'return'ステートメントを置いているのはなぜですか?つまり、初めてループを通過すると、メソッドから戻り、ループの残りの部分を決して通過しないということです。値を返すメソッドはただ1つの値を返します。メソッドが3つの異なる値を返すとはどのように考えましたか? – ajb

+0

あなたの最後の質問に答えるには:(1)質問者がこのような「復帰」ステートメントでループを書いたところで、なぜそれが間違っていたのか理解できなかったいくつかの他の投稿を見ました。 (2)この質問に答えることができない人は、少なくともコンピュータサイエンスのクラスでは、助手になるべきではない。 (彼らが英語のライティング・アシスタント(TA)であれば問題ありません) – ajb

答えて

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; 
} 
+0

これは非常に良い答えのようです。しかし、私たちはまだStringBuilderを学んでいませんでした。 –

+0

私はそれを一度しか返さない別の方法がありますか? –

+0

@SteveDavあなたはあなたの方法が何を返すのか明確ではありません。 'String'を1つだけ返すことができます。 'String'は何を望んでいますか? – ajb

関連する問題