C#入門⑤ キーボードから入力を受け取る
C#入門⑤ キーボードから入力を受け取る
前回は「計算する(演算子)」の話をしました。
予告では「次はif文」と書きましたが、その前にひとつ。
キーボードから文字を入力してもらう方法をやっておきます。これができると、プログラムが一気に「対話」っぽくなります。
これまでは「表示」だけだった
第1回から、画面に文字を出す Console.WriteLine を使ってきました。これは、プログラムから人へ出力(表示)する命令です。
Console.WriteLine("おはよう"); // プログラム → 人
今回はその逆。人からプログラムへ、入力してもらいます。使うのは Console.ReadLine です。
string name = Console.ReadLine(); // 人 → プログラム
Console.ReadLine() は、「キーボードから1行入力されるのを待って、その文字を受け取る」命令です。
受け取った文字は、第2回でやった変数(箱)に入れて、覚えておきます。上の例では name という箱に入れています。
実際に動かしてみる
名前を聞いて、あいさつするプログラムです。
Console.WriteLine("お名前は?");
string name = Console.ReadLine();
Console.WriteLine(name + "さん、こんにちは!");
これを実行すると、こうなります。
お名前は?
山田 ← ここでキーボードから入力
山田さん、こんにちは!
流れを追ってみましょう。
- 「お名前は?」と表示する
ReadLineで、入力を待つ(ここでプログラムは一旦止まる)- 「山田」と入力すると、それが
nameの箱に入る - 「山田さん、こんにちは!」と表示する
name + "さん、こんにちは!"` の + は、第4回の足し算と同じ記号ですが、文字列どうしを + すると、つなげるという意味になります。「山田」+「さん、こんにちは!」で「山田さん、こんにちは!」ですね。
数字を入力してもらうときの注意
ここが今回の山場です。
ReadLine で受け取ったものは、必ず文字列(string)になります。たとえ数字を入力しても、です。
だから、こういうコードはエラーになります。
Console.WriteLine("年齢は?");
int age = Console.ReadLine(); // 文字列を、整数の箱に入れようとしてエラー!
ReadLine が返すのは文字列(string)なのに、age は整数(int)の箱。第3回でやった「箱の種類が合わない」状態です。
数字として受け取りたいときは、文字列を整数に変換する必要があります。
Console.WriteLine("年齢は?");
string input = Console.ReadLine(); // まず文字列として受け取る
int age = int.Parse(input); // 整数に変換する
int.Parse(...) は「カッコの中の文字列を、整数に変換する」命令です。
第3回で「数字の100」と「文字の"100"」は別物だと書きました。まさにそれです。入力された "20" は文字なので、計算に使うには、整数の 20 に変換してあげる必要があるのです。
つまずきポイント
ReadLine の結果は、いつでも文字列。
数字がほしいときは、変換を忘れない。
これを忘れて、入力された数字をそのまま計算しようとして、つまずく人がとても多いです。「入力=文字列」と、まず覚えてしまいましょう。
まとめ
Console.ReadLine() で、キーボードから入力を受け取れる。
受け取るのは、いつも文字列。
数字として使うなら、int.Parse() で変換する。
次回こそ、条件によって動きを変える if文 です。今回の「入力」と組み合わせると、ぐっとプログラムらしくなります。

