(注)¥は漢字を使っています。NetBeansのエディタにコピーして動かす時は、半角の¥に直してください。
A. int i=n.length-1
B. i>=0
最後の要素を最初に出力する逆順の処理。次のコードを実行して確認できる。
(1) C
(2) B
(3) D
(4) D
(5) E
(6) C
(1)は、i+=2なので、毎回iの値が2ずつ増える。(2)は、for文に後処理がないが、System.out.println(i++); により、iは毎回1ずつ増える。(3)は、i の初期値がa.length-1 (=7)なのに、for文の繰り返し条件部が i<=0 となっているため、一回も処理をせずにfor文が終了する。(4)は、iの初期値は1で、繰り返し条件は i<8 となっているが、for文の中で i の値が変化しないので、無限ループになる。(5)は、for文に{ }がないので、System.out.println(a[i]); だけがfor文に含まれる。i++は、for文の外である。しかし、for文の外ではiは存在しないため、i++は存在しない変数を使っていることになり、コンパイルエラーになる。(6)も、内側のfor文で実行されるのは、System.out.println("*");だけであるため、*が3回出力された後、@が1つだけ出力される。
【注】(6)は、問題に誤記があり訂正しています。正誤表を参照してください。