C#入門⑨ while文 ── 条件が続く間、くり返す
前回は「for文(決まった回数くり返す)」をやりました。
今回は、もうひとつのくり返し、while文(ホワイルぶん)です。for文との使い分けが分かると、くり返しの理解がぐっと深まります。
while文とは、「ある条件が成り立つ間、くり返す」しくみです。
for文と、何が違うのか
for文は「5回くり返す」のように、回数が決まっているくり返しが得意でした。
でも、世の中には「何回くり返すか、やってみないと分からない」ことがあります。
「正しいパスワードが入力されるまで、聞き続ける」
「ゲームで、ライフが0になるまで、続ける」
「合計が100を超えるまで、足し続ける」
これらは、回数ではなく「条件」でくり返しが決まります。何回で終わるかは、その時々で変わる。
こういうときに使うのが、while文です。料理でいうなら、「とろみがつくまで、混ぜ続ける」ような感じ。回数ではなく、状態で終わりが決まります。
書き方を見てみる
カウントが5になるまでくり返す、シンプルな例です。
int count = 0;
while (count < 5)
{
Console.WriteLine(count);
count++;
}
実行すると、こうなります。
0
1
2
3
4
形を見てみましょう。
while (条件)
{
くり返したい処理
}
while のカッコの中に、続ける条件を書きます。条件が true の間、{ } の中をくり返します。
流れはこうです。
- 「count(0)< 5?」→ true。中を実行(0を表示)。countを1増やす
- 「count(1)< 5?」→ true。中を実行(1を表示)。countを1増やす
- ……くり返す
- 「count(5)< 5?」→ false。くり返し終了
結果は、実はfor文の例と同じです。
for文と、書き方をくらべてみる
さっきのwhile文と、同じ動きをするfor文を並べてみます。
// while文
int count = 0;
while (count < 5)
{
Console.WriteLine(count);
count++;
}
// for文
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
実は、for文は「カウンターを使ったwhile文」を、コンパクトにまとめた形なんです。
- for文は、カウンターの準備・条件・増やすを 1行にまとめている
- while文は、それらを バラバラに書く
だから、回数が決まっているなら for文、条件しだいなら while文、と使い分けるのが自然です。
「やってみないと分からない」ときに、真価を発揮する
while文が本当に役立つのは、こういう場面です。
string answer = "";
while (answer != "おはよう")
{
Console.WriteLine("合言葉を入力してください");
answer = Console.ReadLine();
}
Console.WriteLine("正解です!");
「おはよう」と入力されるまで、何度でも聞き続けます。
1回で正解するかもしれないし、10回間違えるかもしれない。何回くり返すかは、やってみないと分からない。こういうとき、while文が活躍します。for文では、こうはいきません。
(!= は「等しくない」という意味です。「answerがおはようでない間、くり返す」ですね。)
つまずきポイント
for文と同じく、無限ループに注意です。
int count = 0;
while (count < 5)
{
Console.WriteLine(count);
// count++ を書き忘れている!
}
count++(countを増やす)を忘れると、count はずっと0のまま。「0 < 5」が永遠に true で、止まらなくなります。
while文は、for文と違ってカウンターを増やす場所が決まっていません。だから 「条件を false にする処理」を、自分で必ず中に入れる。これを忘れないようにしましょう。
まとめ
while文は、条件が成り立つ間くり返すしくみ。
while (条件)
{
くり返したい処理
// 条件をいつか false にする処理を忘れずに
}
- 回数が決まっているなら → for文
- 条件しだい(何回か分からない)なら → while文
次回は、くり返しを途中で「抜ける」「飛ばす」ための、break と continue です。

