while の後ろのセミコロン
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
int i = 0;
while (i < 3);
{
i++;
}
System.out.println(i);
}
}
- A
3と出力される - B
1と出力される - C 処理が終わらない (無限ループ)
- D コンパイルエラーになる
正解と解説を見る
正解: C
- A:
while (i < 3);の;が本体なので、i は増えずに無限ループになります。 - B: 下の
{ i++; }はループの本体ではなく、ループの後のブロックです。そこまで進みません。 - C: i が増えないので、条件はずっと true のままです。
- D:
;だけの本体 (空文) は文法上正しいので、コンパイルできます。
ポイント
while (i < 3);の;は「何もしない文」で、これがループの本体になります。i は増えないので無限ループです。- 実行すると時間切れで停止します。
「繰り返し文 (do/while、while、for 文および拡張 for 文) の使用」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)