2016-09-15 11 views
0

forループの要素を返すにはどうすればよいですか?forループ外のforループの要素を返します

private List<String> list = new ArrayList<String>(); 
//we only neeed one good element of the list 
    String find(){ 
     for (int i=0; i<list.size(); i++){ 
      if (list.get(i).isGood()) { 
       return list.get(i); 
      } 
     } 
    return list.get(i); //doesn't work obviously, but how to make it work? 
} 

返信文がないのでコンパイルできません。私はlist.get(i)を返したいと思います。

+0

return文がある場合は、break文は必要ありません。 – Eran

+0

なぜ壊れますか? return文はメソッドを終了します。 –

答えて

3

returnステートメントの後にメソッドが終了するので、returnの呼び出し後にbreakを呼び出す必要はありません。したがって、breakステートメントは実行される可能性がないため、このコードはコンパイルされません。さらに

あなたは、何も値が返されない場合、ループはループを形成した後、例えばreturnthrow文を必要とする:return命令は、現在の関数からすぐにコード終了に達している

String find(){ 
    for (int i=0; i<list.size(); i++){ 
     if (list.get(i).isGood()) { 
      return list.get(i); 
     } 
    } 
    return null; 
} 
+0

これは不要です。エラー、到達不能なコードステートメントです。 –

+0

さて、私は休憩が必要ではないことを理解していますが、私はnullを返すことを望んでいません。そうでなければ、それは簡単すぎます。ヌルではコンパイルされますが、 – jiji

0

returnと同じように、breakは必要ありません。 returnが呼び出された行からメソッドを終了します。だから、あなたはループを壊すことを考える必要はありません。

詳細については、returnをご覧ください。

0

次の行は決して届かないので受け入れられません。

0

break;呼び出しが到達不能コードステートメントです。 すべてのコードブランチにはreturn文が必要です。 ストリームAPIの場合:

String find() { 
    return list.stream() 
       .filter(Clazz::isGood) 
       .findFirst() 
       .get(); 
} 
関連する問題