IT転職・プログラミングスクール

マニアックなfor文の使い方【Java Silver例題】

Java Silver 例題

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。

今回は、for文の正しい使い方についての出題です。

for文は次のような構文であることは誰もが知っているますが、実は意外と奥が深い文でもあります。

for( 変数初期化; 条件式 ; 更新文 ){
- 処理 -
}

 

問題:正しいfor文はどれ?

早速ですが、次の問題を解いてみください。

いかがでしょうか?

選択肢のうち、コンパイルが成功するfor文が5つもあるのに驚く人も多くいるかもしれません。

 

 

答えはACです。

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

 

if文のポイントと解説

意外と知られていない、for文のポイントは次の通りです。

ポイント

●変数初期化

同じ型なら複数定義できる
異なる型が複数あるとコンパイルエラー

●条件式

・複数の条件式を組み合わせるときは&&または||を使う
空白でもコンパイルエラーにならない

●更新文

・インクリメント、デクリメント以外の式も可能
・更新文が複数の場合はカンマで区切る
空白でもコンパイルエラーにならない

ポイントを1つずつ解説していきます。

変数初期化

変数初期化では、複数の変数を定義できますが全て同じ型である必要があります。

例えば、次の①のようにint型で変数2つを定義するのはOKですが、②のようにint型とlong型のように複数の型が混在する場合はコンパイルエラーになります。

① for(int i = 0,  j=1; i<=4, i++ ){  }   //OK

② for(int i = 0, long j=1; i<=4, i++ ){  }  //コンパイルエラー

 

条件式

条件式では、複数の条件を組み合わせる場合、&&か||を用いなければコンパイルエラーになります。

例えば、次の③のようにカンマを使った場合はコンパイルエラーになります。

③ for(int i = 0, i = 0; i < 5 , j <3 ; i++){  }   //コンパイルエラー

 

また、次の④のように条件文が空欄でもコンパイルエラーになりません。しかし、常に条件がTRUEとなるので、無限ループしてしまいます。

④ for(int i = 0; ; i++){  }   //OK

 

更新文

更新文は「i++」や「i--」が定番ですが、実は次のように式でもコンパイルは成功します。

⑤ for(int i=0; i<5; i = i+2){   }   //OK

さらに、更新文は複数の式を入れることもでき、その場合は"カンマ"で区切ります。

⑥ for(int i=0, j=0 ; i<5; i++, j++){   }   //OK

また、更新文も空白にしてもコンパイルは成功します。

⑦ for(int i=0, ; i<5; ){   }   //OK

 

解説

ここまでのポイントを踏まえて、もう1度問題を見てみましょう。

Aは変数初期化でint型とfloat型を定義しているので、コンパイルエラーになります。

Bはint型で2つの変数を宣言しているので正しいです。

Cは条件文が2つありますが、カンマで区切っているので、コンパイルエラーになります。

Dも条件式が2つがありますが、&&を使っているので正しいです。

Eは正しい更新文です。

Fは更新文が2つありますが、これは正しくエラーになりません。

Gは条件文と更新文が空白になっていますが、どちらも空白を許容できるためコンパイルエラーにはなりません。

 

よって、答えはAとCです。

 

 

Java Silver 問題集
参考記事【Java Silver問題集】高頻出・間違えやすい問題たち

この記事は、Oracle Java SE8 Silver(1Z0-808)の対策講座です。 出題確率が高く、間違いやすい例題が解説付きで100問以上あります。   Java Silver 問 ...

続きを見る

-IT転職・プログラミングスクール
-,

Copyright© 人生2段飛ばし , 2020 All Rights Reserved Powered by AFFINGER5.