一回も披露したことのない豆知識

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

A 回答 (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)
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/04/04 02:35

このような可能性もありますね。




---------------------------------------------
次はエラーとなります。
---------------------------------------------
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文により次の文にも到達する可能性があるのでコンパイルはうまく行くわけです。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/04/04 02:36

for や while の中だけで return を使用している場合は


そのエラーが出ることがありますが。

for や while の外でも
return をきちんと使ってますか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/04/04 02:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報