B. 12345
iが0の時、i++ <5 はtrue。この後iは1増え、1になってコンソールに表示される。
iが4の時、i++ <5 はtrue。この後iは1増え、5になってコンソールに表示される。
従って、1~5まで表示される。
D. 無限ループになる
whileに{ }がないので、while文の範囲は以下のようになる。 bの値が変換しないので、無限ループになる。
E. 実行時例外
do-while文で、i<5 の間繰り返す。iが4の時、 System.out.print(a[++i] + " "); では++iによりiは5になる。しかし、a[5]は範囲外の要素を指すことになり、実行時例外が起こる。配列番号が範囲外かどうか、コンパイラはチェックしないのでコンパイルエラーになならないことに注意する。
C. コンパイルエラー
次の網掛け部分は、do-whileの中で変数aを宣言している。do{ } の中で宣言した変数は、do{ } の中だけで有効な変数である。while() の部分は、do{}の外なので、aは存在しない変数となり、コンパイルエラーになる。 変数aをdo{ } の外で宣言しておくのが正しい書き方。