【C#入門】while文で「正しい入力が来るまで繰り返す」仕組みを理解する
目次
はじめに
プログラムを作っていると、
- ユーザーが変な値を入力する
- 想定外の値が入る
- 処理が壊れる
ということが頻繁に起きます。
そこで重要になるのが
入力チェック(バリデーション)
です。
今回は教科書に出てくる次のコードを題材に、
while文の実践的な使い方を理解していきます。
サンプルコード
var num = 0;
while (num <= 0 || 5 <= num)
{
Console.WriteLine("1、2、3、4のいずれかを入力してください。");
var line = Console.ReadLine();
num = int.Parse(line);
}
Console.WriteLine($"{num}が入力されました。");
このプログラムは何をしている?
一言でいうと
正しい数字が入力されるまで聞き続ける
プログラムです。
ステップで理解する
① 初期値
var num = 0;
まず num に 0 を入れます。
② while の条件
num <= 0 || 5 <= num
これを日本語にすると
num が0以下 または 5以上 の間は繰り返す
つまり
範囲外なら繰り返す
という意味です。
数直線で考える

許可されているのは
1~4
だけです。
それ以外なら再入力になります。
なぜこの条件を書くのか
初心者がよく思う疑問:
「1〜4ならOK」って書けばよくない?
つまり
1 <= num && num <= 4
と書きたくなります。
しかし重要なポイントがあります。
while文に書くのは
続ける条件
です。
while は
- 正しい時に入るではなく
- 繰り返したい時に入る
構造です。
このコードの考え方
① 正しい範囲
1~4
② 間違い範囲
それ以外
③ 間違いの間は続ける
だから
num <= 0 || 5 <= num
となります。
whileを抜けた瞬間の保証
このコードの最も重要なポイント
ループ終了後
num は必ず 1~4
であることが保証されています。
これがプログラム設計で非常に重要な考え方です。
「状態を保証する」
後続の処理を安全に書けるようになります。
実務で使うなら改良が必要
このコードには1つ問題があります。
数字以外を入力すると落ちる
abc
入力すると
例外発生(クラッシュ)
します。
改良版(実務寄り)
int num;
while (true)
{
Console.WriteLine("1、2、3、4のいずれかを入力してください。");
if (!int.TryParse(Console.ReadLine(), out num))
{
Console.WriteLine("数値を入力してください");
continue;
}
if (1 <= num && num <= 4)
break;
}
Console.WriteLine($"{num}が入力されました。");
このコードで学べること
- 例外回避
- TryParse
- continue
- break
- 無限ループ設計
- 実務的入力検証
現場ではこちらの書き方に近くなります。
今日のまとめ
while文の本質
- 条件が真の間繰り返す
- 書くのは「続ける条件」
- 終了後の状態を保証する
このサンプルの学習ポイント
- 複合条件(OR)
- 範囲チェック
- 入力検証
- 安全なプログラム設計
訪問数 15 回, 今日の訪問数 16回



ディスカッション
コメント一覧
まだ、コメントがありません