while、forの条件式が判定されるタイミングは?(Java)(超初心者)
応用情報の問題を解いてて、whileの条件式って最初に1回判定されるっけ?ってちょっと混乱したのでまとめました。
タイトルにJavaってつけてますがJavaに限った話ではないと思います(多分)。
while
while(条件式・・・①){ //処理・・・② }
while文では、
① 条件式が判定される
② 条件式がtrueだったら処理が実行される(falseなら処理は1度も行われない)
①' 再度条件式が判定される
②' 条件式がtrueだったら・・・
という流れで繰り返されます。
do-while
do{ //処理・・・① }while(条件式・・・②);
do-while文では、
① 処理が実行される
② 条件式が判定される
①' 条件式がtrueだったら処理が実行される(falseならされない)
②' 条件式が・・・
という流れで繰り返されます。
ポイントは、条件式に関わらず最低一回は処理が実行される、ということです。
あと、while文と違って最後に;(セミコロン)が必要なのも忘れがちですよね!(私はこの記事書いてて気づきました)
for
for(式1・・・①; 条件式・・・②; 式2・・・④){ //処理・・・③ }
for文では、
① 式1でカウンタ変数の初期化を行う
② 条件式が判定される
③ 処理が行われる
④ 式2でカウンタ変数のインクリメントなどが行われる
という流れで繰り返されます。
クイズ
では、以下のコードの出力結果はどうなるでしょうか?
①while
public class WhileSample { public static void main(String[] args) { int i = 0; while(i<3) { System.out.println(i); } } }
↑のコードの出力はどうなるでしょうか??
正解は・・・
0が無限に出力されるです!
すみません、whileって書き慣れてないのでiを増やすのを忘れてました(笑)
本当にやりたかった問題はこっちです!
public class WhileSample { public static void main(String[] args) { int i = 0; while(i<3) { System.out.println(i); i++; } } }
さて、出力結果はどうなるでしょうか?
0 1 2
となります!
②do-while
public class DoWhileSample { public static void main(String[] args) { int i = 0; do { System.out.println(i); i++; }while(i<3); } }
の出力はどうなるでしょうか?
結果は・・・
0 1 2
となります!
whileと一緒ですね。
せっかくなので、do-whileらしいのも書いてみます。
public class DoWhileSample2 { public static void main(String[] args) { int i = 100; do { System.out.println(i); i++; }while(i<3); } }
これを実行すると・・・
100
という結果になります。do-while文なので、条件に合っていなくても1回は実行されていますね!
③for
public class ForSample { public static void main(String args[]) { for(i = 0; i<3; i++) { System.out.println(i); } } }
これを実行するとどうなるでしょうか?
答えは・・・
コンパイルエラーになるです!
私がよくやる”変数の宣言を忘れる"というミスです(笑)
ちゃんと int i=0 というように直して
package javaSamples; public class ForSample { public static void main(String args[]) { for(int i = 0; i<3; i++) { System.out.println(i); } } }
実行すると、
0 1 2
と出力されます!
まとめ
- while文、for文は最初に条件式の判定が行われる
- do-while文は、処理を行ってから条件式の判定が行われる
あと、forはカウント変数を初期化するのを忘れがちなので気をつけたいです!
参考文献
オラクル認定資格教科書 Javaプログラマ Silver SE 8 スピードマスター問題集
- 作者: 日本サード・パーティ株式会社
- 出版社/メーカー: 翔泳社
- 発売日: 2016/03/02
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る