未来エンジニア養成所Blog

月単価180万以上のプログラミング講師がプログラミングを皆に楽しんでもらうための情報をお届けします。

【Java】基本構文に関する問題1-11

title


問題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公式アカウント

仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】


LineOfficial

友だち追加