プログラムがユーザーと対話できるようになると、作れるものの幅がぐっと広がります。これを実現するには、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~7の数字で曜日を入力してもらう。
- 入力された値が数字かどうかを
int.TryParse()
で判定する。 - 数字であれば、
switch
文でその曜日に応じたメッセージを表示する。- 月~金は「お仕事頑張りましょう。」
- 土曜は「お休みですね!ゆっくり休みましょう。」
- 日曜は「明日からに備えて準備しましょう。」
- 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
のいずれかの場合」という条件をまとめて表現しています。
まとめ
今回は、ユーザーからの入力を受け取り、その内容に応じて処理を分岐させる実践的な方法を学びました。
Console.ReadLine()
でユーザーからの入力をstring
型として受け取る。- 入力値を数値として扱いたい場合は、
int.TryParse()
を使って安全に型変換する。 - 変換後の値を
if
文 やswitch
文 の条件式で使い、対話的なプログラムを作成する。
この「入力→判定→分岐」という流れは、あらゆるインタラクティブなアプリケーションの基本となります。ぜひ、おみくじプログラムや簡単なクイズなど、自分だけの対話プログラム作成に挑戦してみてください。