問題1-11
int型変数xが1で初期化されています。
xの値をwhile文を用いて2倍していき、その都度値を出力します。
xの値が1000を超えた段階でループを終了してください。
【実行結果】
1 2 4 8 16 32 64 128 256 512
【WhileBasicPractice.java】
public class WhileBasicPractice { public static void main(String[] args) { int x = 1; // while文の開始 } }
解答例
【WhileBasicPractice.java】
public class WhileBasicPractice { public static void main(String[] args) { int x = 1; // while文の開始 while(x <= 1000) { System.out.println(x); x *= 2; } } }
解説
Javaの繰り返し構文は全部で4つあります。
1つ目が「for文」、2つ目が今回のテーマである「while文」、3つ目は「do-while文」、そして4つ目はJDK5.0から導入された「拡張for文」です。
そして「for文」と「while文」は、Javaプログラミングの基本として非常に重要ですので、しっかりマスターしましょう。
一般的に、for文は繰返し回数があらかじめわかっている場合に使用します。
それに対して、while文は繰り返し回数が不定の場合に使用することが多いです。
今回の問題も、1を何回2倍にすれば1000を超えるのかピンとこないので、やっぱりwhile文が向いています。
while文の構文は非常にシンプルで、次のようになります。
while(条件式) { // 繰り返したい処理 }
条件式がtrueなら、ブロックの中に入って処理を行った後、再び条件式を評価します。
条件式がtrueの間ぐるぐると処理を繰り返し、いずれ条件式がfalseになって終了します。
while文はシンプルですが、それゆえに致命的なバグを含んでしまうことがあります。
今回の問題も、次のように記述してパニックになった方はいないでしょうか。
while(x <= 1000) { System.out.println(x * 2); }
これは危険です。
変数xの値を2倍してはいますが、変数xの値を変化させていないので、変数はずっと1のままです。
つまり、条件式「x <= 1000」は永遠にtrueとなり、「2」を出力し続けてループは終わりません。
このバグを「無限ループ」と言います。
もし無限ループになってしまったら、慌てずに「Ctrl + C」を押して、強制終了しましょう。
for文に比べて、while文は無限ループを起こしやすいので注意が必要です。
参考図書
LINE公式アカウント
仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】