【C#実践】ユーザー入力とif文・switch文を組み合わせよう!簡単な対話プログラム作成

プログラムがユーザーと対話できるようになると、作れるものの幅がぐっと広がります。これを実現するには、2つのステップが必要です。

  1. ユーザーからのキーボード入力を受け取る。
  2. 受け取った入力内容に応じて、if文やswitch文で処理を変える。

この記事では、この2つのステップを組み合わせ、簡単な対話形式の「曜日判定プログラム」を作成する手順を解説します。


目次

ユーザーからの入力を受け取る方法

C#のコンソールアプリケーションでは、Console.ReadLine() という命令を使うことで、ユーザーがキーボードで入力した文字列をプログラム内で受け取ることができます。

Console.ReadLine()は、ユーザーが何らかの文字を入力し、Enterキーを押すまでプログラムの実行を一時停止します。入力された文字列は、string型の変数に代入して利用します。

サンプルコード

Console.WriteLine("あなたの名前を入力してください。");

// ユーザーの入力を待ち、入力された文字列を aName に代入
string aName = Console.ReadLine();

Console.WriteLine("こんにちは、" + aName + "さん!");

文字列を数値に変換する際の注意点

Console.ReadLine()で受け取れる値は、たとえユーザーが123と数字を入力したとしても、必ず**string型(文字列)**になります。

そのため、入力された値を数値として扱いたい場合(例:大小比較や計算)は、文字列を数値(int型など)に変換する必要があります。

しかし、もしユーザーが数字以外(例: “abc”)を入力した場合、単純な変換処理はエラーとなりプログラムが強制終了してしまいます。

そこで、安全に変換を行うために int.TryParse() を使うのが一般的です。

int.TryParse()は、変換を試み、成功すればtrueを返して変換後の数値を、失敗すればfalseを返してプログラムを止めずに処理を続行させることができます。

Console.WriteLine("あなたの年齢を数字で入力してください。");
string input = Console.ReadLine();

int age;
// int.TryParse(変換したい文字列, 変換後の数値を入れる変数)
if (int.TryParse(input, out age))
{
    // 変換が成功した場合の処理
    Console.WriteLine("あなたは " + age + " 歳なのですね。");
}
else
{
    // 変換が失敗した場合の処理
    Console.WriteLine("エラー:年齢は半角数字で入力してください。");
}

実践:今日の予定判定プログラムを作ろう

それでは、これまでの知識を組み合わせて、ユーザーが入力した曜日の数字(1:月曜~7:日曜)に応じて、今日の予定を教えてくれるプログラムを作成しましょう。

プログラムの要件

  1. ユーザーに1~7の数字で曜日を入力してもらう。
  2. 入力された値が数字かどうかをint.TryParse()で判定する。
  3. 数字であれば、switch文でその曜日に応じたメッセージを表示する。
    • 月~金は「お仕事頑張りましょう。」
    • 土曜は「お休みですね!ゆっくり休みましょう。」
    • 日曜は「明日からに備えて準備しましょう。」
  4. 1~7以外の数字や、そもそも数字でない場合は、エラーメッセージを表示する。

完成コード

using System;

Console.WriteLine("曜日を数字で入力してください (1:月曜 ~ 7:日曜)");
string input = Console.ReadLine();

int dayOfWeek;
if (int.TryParse(input, out dayOfWeek))
{
    // 文字列から数値への変換に成功した場合
    switch (dayOfWeek)
    {
        case 1: // 月曜
        case 2: // 火曜
        case 3: // 水曜
        case 4: // 木曜
        case 5: // 金曜
            Console.WriteLine("平日です。お仕事頑張りましょう!");
            break;

        case 6: // 土曜
            Console.WriteLine("土曜日!ゆっくり休みましょう。");
            break;
            
        case 7: // 日曜
            Console.WriteLine("日曜日。明日からに備えて準備しましょう。");
            break;

        default:
            // 1~7以外の数値が入力された場合
            Console.WriteLine("エラー:1から7の範囲で入力してください。");
            break;
    }
}
else
{
    // 文字列から数値への変換に失敗した場合
    Console.WriteLine("エラー:半角数字で入力してください。");
}

Console.ReadLine();

このコードでは、caseを連続で書くことで、「case 1からcase 5のいずれかの場合」という条件をまとめて表現しています。

まとめ

今回は、ユーザーからの入力を受け取り、その内容に応じて処理を分岐させる実践的な方法を学びました。

  1. Console.ReadLine() でユーザーからの入力をstring型として受け取る。
  2. 入力値を数値として扱いたい場合は、int.TryParse() を使って安全に型変換する。
  3. 変換後の値を ifswitch の条件式で使い、対話的なプログラムを作成する。

この「入力→判定→分岐」という流れは、あらゆるインタラクティブなアプリケーションの基本となります。ぜひ、おみくじプログラムや簡単なクイズなど、自分だけの対話プログラム作成に挑戦してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次