CodeGym /コース /C# SELF /キーボードからの入力

キーボードからの入力

C# SELF
レベル 2 , レッスン 5
使用可能

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()で分かりやすいヒントを出してあげよう。

1
アンケート/クイズ
int型とstring型の紹介、レベル 2、レッスン 5
使用不可
int型とstring型の紹介
int型とstring型の紹介
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION