1. はじめに
今までは、ラジオみたいに何かを伝えるだけで、君の言葉には全然反応しないプログラムを書いてきたよね。もちろん、それだけじゃ物足りない!ほとんどのプログラムの目的は、ユーザーのために何か役立つことをすること。だから、ユーザーがキーボードからデータを入力できるようにする必要がよくあるんだ。
例えば:
- 電卓は、君が数字や演算子を入力するのを待ってる。
- ウェブサイトのフォームは、君の氏名、メールアドレス、住所を入力して申請を処理する。
- ゲームはプレイヤーの名前を聞いてくる。
今日はアプリにマイクを渡そう!…もしくは耳でもいいけどね :) 準備はいい?いくよ!
2. Console.ReadLine()との出会い
Console.ReadLine()は、プログラムがユーザーのキーボード入力を受け取れるようにする関数(または「コマンド」)だよ。
プログラムの実行がConsole.ReadLine()に到達すると、プログラムは止まって…君が何か入力してEnterを押すまでじっと待ってる。Enterを押すまでに入力したものが、1つのテキスト行として扱われるんだ。その行がプログラムに返される――まるでユーザーが窓越しにメモを渡してくれるみたいな感じ!
基本例
// ユーザーに名前を聞いて挨拶しよう
Console.WriteLine("君の名前は?");
string userName = Console.ReadLine(); // ここでプログラムは入力待ち!
Console.WriteLine("やあ、" + userName + "!");
どう動くか:
- 画面に君の名前は?と表示される。
- 例えばアンドレイと入力してEnterを押す。
- userName変数に"アンドレイ"が入る。
- 画面にやあ、アンドレイ!と表示される。
ここで注意: Console.ReadLine()が返すものは必ず文字列(型はstring)だよ。ユーザーが数字を入力しても、それは文字列として扱われる!
3. サンプル
Console.ReadLine()が実際にどう使われるか見てみよう。
サンプル1:ユーザーの名前を入力
Console.WriteLine("あなたの名前を入力してください:");
string name = Console.ReadLine();
Console.WriteLine("ようこそ、" + name + "!");
サンプル2:1行で結果を表示
+演算子を使えば、テキストと入力結果をすぐに結合できるよ。
Console.Write("君の好きな色は: ");
string color = Console.ReadLine();
Console.WriteLine("いいね!君の好きな色は " + color + " だね。");
この例ではConsole.Write(改行なし)を使って、質問のすぐ後にユーザーが入力できるようにしてるよ。
サンプル3:連続で複数入力
ミニアンケートを作ってみよう:
Console.Write("お名前は? ");
string name = Console.ReadLine();
Console.Write("年齢は? ");
string age = Console.ReadLine(); // まだ文字列のまま
Console.WriteLine("あなたの名前は " + name + "、年齢は " + age + " 歳です。");
こう表示されるよ:
お名前は? ビカ
年齢は? 23
あなたの名前は ビカ、年齢は 23 歳です。
4. 数値データの入力:変換
ここは初心者がよくハマるポイント! Console.ReadLine()は、ユーザーが123と入力しても、必ず文字列として返す。
もし数字として使いたいなら、文字列を必要な数値型(例えばint)に変換しなきゃいけない。C#では変換メソッド、例えばint.Parse()やConvert.ToInt32()を使うよ――これは前回のレクチャーでも話したね。
サンプル:年齢を聞く
Console.Write("年齢は? ");
string input = Console.ReadLine(); // 例: input = "27"
int age = int.Parse(input); // 文字列 "27" を数字 27 に変換
Console.WriteLine("来年は " + (age + 1) + " 歳だね");
ユーザーが数字以外を入力すると、プログラムはエラー(FormatException)を投げるよ。もっと堅牢なコードの書き方は後で学ぶけど、今はこれで十分!
5. 絶対に出会うミス
数字に変換し忘れた:
Console.ReadLine()の値を変換せずに数字として使おうとした場合。
string input = Console.ReadLine();
int sum = input + 5; // エラー!文字列と数字は足せない。
intに変換しよう:
int sum = int.Parse(input) + 5;
変数の宣言を忘れた:
name = Console.ReadLine(); // エラー!変数nameが宣言されてない。
まず宣言しよう:string name = Console.ReadLine();
入力と出力の順番を間違えた:
初心者はよく変なミスをする。でもプロでもやるよ。顔は真剣だけどね :)
string name = Console.ReadLine();
Console.WriteLine("名前を入力してください: " + name); // 先に聞いてから読み取ろう!
正しい順番:
Console.Write("名前を入力してください: ");
string name = Console.ReadLine();
Console.WriteLine("やあ、" + name);
便利なメモ
もしConsole.ReadLine()を質問なしで使った場合(例えばstring x = Console.ReadLine();だけ)、プログラムは入力を待つ。でもユーザーは何を入力すればいいか分からない!だから必ずConsole.Write()やConsole.WriteLine()で分かりやすいヒントを出してあげよう。
GO TO FULL VERSION