• 締切済み

for,while文とreturn

for文やwhile文の中にreturnは入れれない? 指定がないとコンパイルエラーがでますが どうしてでしょうか。

みんなの回答

  • luckymako
  • ベストアンサー率55% (29/52)
回答No.3

これだと return 以下のコード (B) はどんな場合も実行されないので、不到達エラーが出ます。 System.out.print(); (A) return; System.out.print(); (B) 以下は if の条件によっては (B) が実行されるのでエラーにはなりません。 System.out.print(); (A) if(bool)return; System.out.print(); (B)

yuuitirou
質問者

お礼

ありがとうございました。

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

このような可能性もありますね。 --------------------------------------------- 次はエラーとなります。 --------------------------------------------- public static void main(String args[]) { int i; for (i=0; i<10; i++) { System.out.print("i:" + i ); return; System.out.print("i:" + i ); } } --------------------------------------------- 次は、大丈夫です。 --------------------------------------------- public static void main(String args[]) { int i; for (i=0; i<10; i++) { System.out.println("i:" + i ); if (i>=5) return; System.out.println("i:" + i ); } } --------------------------------------------- 上の場合、2番目の System.out.print("i:" + i ); が実行されることは決してありません。 Javaコンパイラーはこれを検知してエラーとします。 文法上到達することの無い文があったときに教えてくれるわけです。 下の場合は、if文により次の文にも到達する可能性があるのでコンパイルはうまく行くわけです。

yuuitirou
質問者

お礼

ありがとうございました。

  • redasurc
  • ベストアンサー率37% (3/8)
回答No.1

for や while の中だけで return を使用している場合は そのエラーが出ることがありますが。 for や while の外でも return をきちんと使ってますか?

yuuitirou
質問者

お礼

ありがとうございました。