【C#入門】入力の受け取り方を基礎から解説|Console.ReadLine・数値変換・エラー対策まで

はじめに

C#でコンソールアプリを作るとき、最初につまずきやすいのが「入力」の受け取り方です。

画面に文字を表示するだけならConsole.WriteLineで簡単にできますが、ユーザーが入力した名前、年齢、点数、金額などをプログラム内で使うには、入力値を受け取り、必要に応じて型変換する必要があります。

C#の入力処理でよく使うのが、Console.ReadLineです。ただし、Console.ReadLineで受け取った値は基本的に文字列として扱われるため、数値として計算したい場合はint.Parsedouble.ParseTryParseなどを使って変換します。

この記事では、C#入門者向けに、コンソールでの入力の基本から、数値変換、エラー対策、複数入力の扱い方まで順番に解説します。

1. C#の「入力」とは?初心者がまず理解すべき基本

C#における入力とは、ユーザーがキーボードなどから入力した値を、プログラムの中で受け取る処理のことです。

たとえば、次のような処理が入力にあたります。

C#
Console.Write("名前を入力してください: ");
string name = Console.ReadLine();
Console.WriteLine("こんにちは、" + name + "さん");

このコードでは、ユーザーが入力した名前をnameという変数に保存し、そのあと画面に表示しています。

C#の入力処理を理解するには、「ユーザーが入力する」「プログラムが受け取る」「受け取った値を使う」という流れを押さえることが大切です。

1-1. C#で入力を受け取る主な場面

C#で入力を受け取る場面は、コンソールアプリの学習や簡単なツール作成でよく登場します。

たとえば、以下のような場面です。

名前を入力して表示するプログラム、年齢を入力して成人判定するプログラム、2つの数値を入力して計算するプログラム、複数の点数を入力して平均点を求めるプログラムなどです。

初心者向けのC#学習では、まずコンソールアプリでConsole.ReadLineを使った入力処理を学ぶことが多いです。入力処理ができるようになると、プログラムが一方的に結果を表示するだけでなく、ユーザーの操作に応じて動くようになります。

1-2. 標準入力とコンソールアプリの関係

C#のコンソールアプリでは、キーボードから入力された内容を「標準入力」から受け取ります。

標準入力とは、プログラムに対して外部からデータを渡すための基本的な入力口です。コンソールアプリでは、通常キーボード入力が標準入力として扱われます。

C#では、標準入力を読み取るためにConsole.ReadLineなどのメソッドを使います。

C#
string input = Console.ReadLine();

この1行で、ユーザーがキーボードで入力してEnterキーを押すまで待ち、入力された内容を文字列として受け取れます。

1-3. 入力処理でよく使うConsoleクラスとは

Consoleクラスは、コンソール画面への入力や出力を扱うためのクラスです。

C#の入門では、次の3つをよく使います。

C#
Console.WriteLine("文字を表示します");
Console.Write("入力してください: ");
string input = Console.ReadLine();

Console.WriteLineは、文字を表示して改行します。

Console.Writeは、文字を表示しますが改行しません。入力を促すメッセージを表示するときによく使います。

Console.ReadLineは、ユーザーが入力した1行分の文字列を受け取ります。

この3つを組み合わせることで、基本的な入力と出力の流れを作れます。

1-4. 入力と出力の流れを簡単なコードで確認する

まずは、C#の入力と出力の基本的な流れを確認しましょう。

C#
using System;

class Program
{
static void Main()
{
Console.Write("好きな言葉を入力してください: ");
string text = Console.ReadLine();

Console.WriteLine("あなたが入力した言葉は「" + text + "」です。");
}
}

実行例は次のようになります。

好きな言葉を入力してください: C#入門
あなたが入力した言葉は「C#入門」です。

このプログラムでは、Console.Writeで入力を促し、Console.ReadLineで入力を受け取り、Console.WriteLineで結果を表示しています。

C#で入力を扱う基本は、この流れが土台になります。

2. Console.ReadLineで文字列入力を受け取る方法

C#でキーボードから文字列入力を受け取るときは、主にConsole.ReadLineを使います。

ReadLineという名前のとおり、1行分の入力を読み取るメソッドです。ユーザーが文字を入力し、Enterキーを押すと、その内容がプログラムに渡されます。

2-1. Console.ReadLineの基本構文

Console.ReadLineの基本構文は次のとおりです。

C#
string 変数名 = Console.ReadLine();

たとえば、ユーザーが入力した文字をinputという変数に入れる場合は、次のように書きます。

C#
string input = Console.ReadLine();

入力前にメッセージを表示したい場合は、Console.Writeと組み合わせます。

C#
Console.Write("名前を入力してください: ");
string name = Console.ReadLine();

このように書くことで、ユーザーに何を入力すればよいか伝えたうえで入力を受け取れます。

2-2. 入力された値はstring型として受け取られる

Console.ReadLineで受け取った値は、基本的にstring型です。

たとえば、ユーザーが25と入力しても、受け取った値は数値の25ではなく、文字列の"25"として扱われます。

C#
string ageText = Console.ReadLine();

この状態では、ageTextをそのまま計算に使うことはできません。

C#
string ageText = "25";
// int nextAge = ageText + 1; // これは意図した計算にならない

数値として計算したい場合は、int.Parseint.TryParseを使って、文字列を整数に変換する必要があります。

まずは、「Console.ReadLineの入力結果は文字列」という点をしっかり覚えておきましょう。

2-3. Console.Write・Console.WriteLineと組み合わせて使う

入力処理では、Console.WriteConsole.WriteLineを一緒に使うことが多いです。

C#
Console.Write("名前を入力してください: ");
string name = Console.ReadLine();

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

Console.Writeを使うと、メッセージの後ろに続けて入力できます。

実行例は次のようになります。

名前を入力してください: 山田
こんにちは、山田さん

一方、Console.WriteLineを使うとメッセージ表示後に改行されます。

C#
Console.WriteLine("名前を入力してください:");
string name = Console.ReadLine();

実行例は次のようになります。

名前を入力してください:
山田

どちらも間違いではありません。入力欄の見せ方に応じて使い分けましょう。

2-4. 名前や文章を入力して表示するサンプルコード

名前と好きな言葉を入力して表示するサンプルです。

C#
using System;

class Program
{
static void Main()
{
Console.Write("名前を入力してください: ");
string name = Console.ReadLine();

Console.Write("好きな言葉を入力してください: ");
string message = Console.ReadLine();

Console.WriteLine("名前: " + name);
Console.WriteLine("好きな言葉: " + message);
}
}

実行例です。

名前を入力してください: 佐藤
好きな言葉を入力してください: 継続は力なり
名前: 佐藤
好きな言葉: 継続は力なり

このように、Console.ReadLineは名前や文章などの文字列入力を受け取るときに便利です。

3. C#で数値入力を受け取る方法

C#で年齢、点数、金額などの数値を入力して使いたい場合、Console.ReadLineで受け取った文字列を数値型に変換する必要があります。

代表的な変換方法には、次のようなものがあります。

C#
int.Parse()
double.Parse()
Convert.ToInt32()
int.TryParse()
double.TryParse()

ここでは、まず基本的なParseConvertについて解説します。

3-1. ReadLineだけでは数値として扱えない理由

Console.ReadLineは、入力された内容を文字列として受け取ります。

C#
Console.Write("年齢を入力してください: ");
string input = Console.ReadLine();

このとき、ユーザーが20と入力しても、inputには文字列の"20"が入ります。

そのため、次のように数値計算をしたい場合は変換が必要です。

C#
int age = int.Parse(input);
int nextAge = age + 1;

int.Parse(input)によって、文字列の"20"を整数の20に変換しています。

文字列のままだと計算ではなく文字列結合になったり、そもそも型が合わずエラーになったりします。C#は型を厳密に扱う言語なので、入力値の型変換はとても重要です。

3-2. int.Parseで整数に変換する方法

整数を入力して使いたい場合は、int.Parseを使います。

C#
Console.Write("年齢を入力してください: ");
string input = Console.ReadLine();

int age = int.Parse(input);

Console.WriteLine("あなたの年齢は" + age + "歳です。");

実行例です。

年齢を入力してください: 25
あなたの年齢は25歳です。

int.Parseは、文字列をint型の整数に変換します。

ただし、入力された文字列が整数として変換できない場合はエラーになります。

年齢を入力してください: abc

このように数値以外を入力すると、FormatExceptionというエラーが発生します。

そのため、実際のプログラムでは後ほど解説するint.TryParseを使う方が安全です。

3-3. double.Parseで小数を受け取る方法

小数を入力したい場合は、double.Parseを使います。

C#
Console.Write("身長を入力してください: ");
string input = Console.ReadLine();

double height = double.Parse(input);

Console.WriteLine("あなたの身長は" + height + "cmです。");

実行例です。

身長を入力してください: 170.5
あなたの身長は170.5cmです。

double型は、小数を扱うための型です。

体重、身長、平均点、割合など、小数を含む値を扱うときに使います。

C#
double price = 123.45;
double average = 82.6;

ただし、double.Parseint.Parseと同じように、変換できない文字列が入力されるとエラーになります。

3-4. Convert.ToInt32との違い

文字列を整数に変換する方法として、Convert.ToInt32もあります。

C#
Console.Write("数値を入力してください: ");
string input = Console.ReadLine();

int number = Convert.ToInt32(input);

Console.WriteLine(number);

int.ParseConvert.ToInt32は似ていますが、違いもあります。

よく使う範囲では、どちらも文字列を整数に変換できます。

C#
int a = int.Parse("100");
int b = Convert.ToInt32("100");

ただし、nullを渡した場合の動作が異なります。

C#
// int.Parse(null);          // エラー
// Convert.ToInt32(null); // 0になる

初心者のうちは、文字列を数値に変換するならint.Parseまたはint.TryParseを中心に覚えるとよいでしょう。

特に、入力ミスに強いプログラムを作りたい場合はTryParseがおすすめです。

3-5. 年齢・点数・金額を入力するサンプルコード

年齢、点数、金額を入力して表示するサンプルです。

C#
using System;

class Program
{
static void Main()
{
Console.Write("年齢を入力してください: ");
int age = int.Parse(Console.ReadLine());

Console.Write("点数を入力してください: ");
int score = int.Parse(Console.ReadLine());

Console.Write("金額を入力してください: ");
int price = int.Parse(Console.ReadLine());

Console.WriteLine("年齢: " + age + "歳");
Console.WriteLine("点数: " + score + "点");
Console.WriteLine("金額: " + price + "円");
}
}

実行例です。

年齢を入力してください: 20
点数を入力してください: 85
金額を入力してください: 1200
年齢: 20歳
点数: 85点
金額: 1200円

このコードでは、Console.ReadLineで入力を受け取り、その場でint.Parseを使って整数に変換しています。

ただし、数値以外が入力されるとエラーになるため、実用的にはTryParseを使う方法を覚えておくと安心です。

4. 入力エラーを防ぐTryParseの使い方

C#で入力処理を行うとき、ユーザーが必ず正しい値を入力するとは限りません。

年齢を入力してほしい場面でabcと入力されたり、何も入力せずEnterキーを押されたりすることがあります。

このような入力ミスに対応するには、TryParseを使うのが便利です。

4-1. Parseでエラーが発生するケース

int.Parseは、変換できない文字列が渡されるとエラーになります。

C#
int number = int.Parse("abc");

このコードは、"abc"を整数に変換できないため、FormatExceptionが発生します。

また、空文字も変換できません。

C#
int number = int.Parse("");

この場合もエラーになります。

入力処理では、ユーザーが何を入力するか完全には制御できません。そのため、Parseだけに頼ると、入力ミスによってプログラムが途中で止まってしまう可能性があります。

4-2. int.TryParseの基本構文

int.TryParseは、文字列を整数に変換できるかどうかを判定しながら変換するメソッドです。

基本構文は次のとおりです。

C#
bool result = int.TryParse(文字列, out int 変数名);

実際のコードで見てみましょう。

C#
Console.Write("整数を入力してください: ");
string input = Console.ReadLine();

bool success = int.TryParse(input, out int number);

if (success)
{
Console.WriteLine("入力された数値は" + number + "です。");
}
else
{
Console.WriteLine("数値を正しく入力してください。");
}

int.TryParseは、変換に成功するとtrueを返し、変換後の数値をoutで指定した変数に入れます。

変換に失敗するとfalseを返します。このとき、プログラムは例外で止まらず、失敗時の処理を書けます。

4-3. 数値以外が入力されたときの対処方法

数値以外が入力された場合に、エラーメッセージを表示する例です。

C#
using System;

class Program
{
static void Main()
{
Console.Write("年齢を入力してください: ");
string input = Console.ReadLine();

if (int.TryParse(input, out int age))
{
Console.WriteLine("あなたの年齢は" + age + "歳です。");
}
else
{
Console.WriteLine("年齢は整数で入力してください。");
}
}
}

実行例です。

年齢を入力してください: abc
年齢は整数で入力してください。

TryParseを使うことで、入力ミスがあってもプログラムを安全に続けられます。

初心者がC#の入力処理を学ぶときは、Parseで基本を理解したうえで、実際にはTryParseを使う習慣をつけるとよいでしょう。

4-4. while文で正しい入力まで繰り返す方法

正しい数値が入力されるまで繰り返したい場合は、while文とTryParseを組み合わせます。

C#
using System;

class Program
{
static void Main()
{
int age;

while (true)
{
Console.Write("年齢を入力してください: ");
string input = Console.ReadLine();

if (int.TryParse(input, out age))
{
break;
}

Console.WriteLine("整数で入力してください。");
}

Console.WriteLine("あなたの年齢は" + age + "歳です。");
}
}

実行例です。

年齢を入力してください: abc
整数で入力してください。
年齢を入力してください:
整数で入力してください。
年齢を入力してください: 25
あなたの年齢は25歳です。

このコードでは、正しい整数が入力されるまで入力を繰り返します。

breakは、ループを抜けるための命令です。int.TryParseに成功したときだけbreakすることで、正しい入力を受け取ったあとに次の処理へ進めます。

4-5. 初心者はParseよりTryParseを使うべき理由

初心者には、ParseよりTryParseの使用をおすすめします。

理由は、入力ミスによるエラーを防ぎやすいからです。

Parseは書き方がシンプルですが、変換できない文字列が入力されると例外が発生します。

C#
int number = int.Parse(Console.ReadLine());

一方、TryParseなら変換に失敗してもプログラムが止まりません。

C#
if (int.TryParse(Console.ReadLine(), out int number))
{
Console.WriteLine(number);
}
else
{
Console.WriteLine("数値を入力してください。");
}

学習用の短いサンプルではParseでも問題ありませんが、ユーザー入力を扱うプログラムではTryParseを使う方が安全です。

C#の入力処理では、「ユーザーは間違った値を入力することがある」と考えて、エラー対策を入れることが大切です。

5. 複数の入力を受け取る方法

C#では、1つの入力だけでなく、複数の値を受け取る場面もよくあります。

たとえば、名前と年齢を入力する、2つの数値を入力して足し算する、複数の点数を入力して合計を求める、といった処理です。

複数入力の受け取り方には、大きく分けて次の方法があります。

1行ずつ入力を受け取る方法、1行に入力された複数の値をSplitで分割する方法、配列に格納する方法、for文で繰り返し入力する方法です。

5-1. 1行ずつ複数回入力を受け取る

もっともわかりやすい方法は、Console.ReadLineを複数回使う方法です。

C#
Console.Write("名前を入力してください: ");
string name = Console.ReadLine();

Console.Write("年齢を入力してください: ");
int age = int.Parse(Console.ReadLine());

Console.WriteLine(name + "さんは" + age + "歳です。");

実行例です。

名前を入力してください: 田中
年齢を入力してください: 30
田中さんは30歳です。

この方法は、入力項目が少ないときに向いています。

コードも読みやすいため、C#初心者が複数入力を学ぶ最初の方法としておすすめです。

5-2. 1行に入力された複数の値をSplitで分割する

競技プログラミングや簡単なデータ入力では、1行に複数の値をスペース区切りで入力することがあります。

たとえば、次のような入力です。

10 20

このような入力を分割するには、Splitを使います。

C#
string input = Console.ReadLine();
string[] values = input.Split(' ');

int a = int.Parse(values[0]);
int b = int.Parse(values[1]);

Console.WriteLine(a + b);

Split(' ')は、文字列をスペースで区切って配列にします。

"10 20"を分割すると、次のような配列になります。

values[0] = "10"
values[1] = "20"

その後、int.Parseを使って数値に変換しています。

5-3. 配列に入力値を格納する

複数の値をまとめて扱いたい場合は、配列を使います。

C#
string[] names = new string[3];

for (int i = 0; i < 3; i++)
{
Console.Write((i + 1) + "人目の名前を入力してください: ");
names[i] = Console.ReadLine();
}

Console.WriteLine("入力された名前:");

for (int i = 0; i < 3; i++)
{
Console.WriteLine(names[i]);
}

実行例です。

1人目の名前を入力してください: 佐藤
2人目の名前を入力してください: 鈴木
3人目の名前を入力してください: 高橋
入力された名前:
佐藤
鈴木
高橋

配列を使うと、複数の入力値をまとめて保存できます。

同じ種類のデータを複数扱う場合に便利です。

5-4. for文を使って複数データを入力する

点数を複数回入力して合計を求める例を見てみましょう。

C#
int total = 0;

for (int i = 0; i < 5; i++)
{
Console.Write((i + 1) + "回目の点数を入力してください: ");
int score = int.Parse(Console.ReadLine());

total += score;
}

Console.WriteLine("合計点は" + total + "点です。");

このコードでは、5回入力を受け取り、その合計を求めています。

for文を使うことで、同じ入力処理を何度も書かずに済みます。

入力回数が決まっている場合は、for文が便利です。

5-5. スペース区切りの数値入力サンプル

1行にスペース区切りで入力された数値を処理するサンプルです。

C#
using System;

class Program
{
static void Main()
{
Console.Write("2つの整数をスペース区切りで入力してください: ");
string[] inputs = Console.ReadLine().Split(' ');

int a = int.Parse(inputs[0]);
int b = int.Parse(inputs[1]);

Console.WriteLine("足し算: " + (a + b));
Console.WriteLine("引き算: " + (a - b));
Console.WriteLine("掛け算: " + (a * b));
}
}

実行例です。

2つの整数をスペース区切りで入力してください: 8 3
足し算: 11
引き算: 5
掛け算: 24

スペース区切りの入力は、複数の数値を一度に受け取りたいときに便利です。

ただし、余分なスペースが入ると意図しない結果になることがあるため、実用的にはStringSplitOptions.RemoveEmptyEntriesを使うと安全です。

C#
string[] inputs = Console.ReadLine()
.Split(' ', StringSplitOptions.RemoveEmptyEntries);

6. Console.Read・ReadKeyとの違い

C#の入力処理には、Console.ReadLineのほかに、Console.ReadConsole.ReadKeyもあります。

名前が似ているため混乱しやすいですが、それぞれ用途が異なります。

基本的には、文字列や数値を入力したい場合はConsole.ReadLineを使います。1文字だけ読み取りたい場合や、キー操作を受け取りたい場合にReadReadKeyを使います。

6-1. Console.ReadLineとの違い

Console.ReadLineは、ユーザーが入力した1行分の文字列を読み取ります。

C#
string input = Console.ReadLine();

ユーザーがEnterキーを押すまで入力を待ち、Enterまでの文字列を受け取ります。

一方、Console.Readは1文字分を読み取りますが、戻り値は文字そのものではなく文字コードを表すintです。

Console.ReadKeyは、押されたキーの情報を受け取ります。Enterを待たずにキー入力を取得できる点が特徴です。

6-2. Console.Readで1文字を読み取る方法

Console.Readは、入力された1文字を読み取ります。

C#
Console.Write("1文字入力してください: ");
int code = Console.Read();

Console.WriteLine("文字コード: " + code);
Console.WriteLine("文字: " + (char)code);

実行例です。

1文字入力してください: A
文字コード: 65
文字: A

Console.Readの戻り値はintなので、文字として表示したい場合は(char)で変換します。

ただし、通常の入力処理ではConsole.ReadLineの方が扱いやすいため、初心者はまずReadLineを中心に覚えれば問題ありません。

6-3. Console.ReadKeyでキー入力を受け取る方法

Console.ReadKeyは、ユーザーが押したキーの情報を受け取ります。

C#
Console.WriteLine("何かキーを押してください。");
ConsoleKeyInfo keyInfo = Console.ReadKey();

Console.WriteLine();
Console.WriteLine("押されたキー: " + keyInfo.Key);
Console.WriteLine("入力文字: " + keyInfo.KeyChar);

実行例です。

何かキーを押してください。
a
押されたキー: A
入力文字: a

Console.ReadKeyは、メニュー操作や「何かキーを押したら終了する」といった処理で使われます。

C#
Console.WriteLine("終了するには何かキーを押してください。");
Console.ReadKey();

このように、画面をすぐ閉じずに一時停止したいときにも使えます。

6-4. それぞれの使い分け早見表

Console.ReadLineConsole.ReadConsole.ReadKeyの使い分けは次のとおりです。

メソッド読み取る内容戻り値主な用途
Console.ReadLine1行分の入力string名前、文章、数値入力
Console.Read1文字int文字コードを扱う入力
Console.ReadKey押されたキーConsoleKeyInfoキー操作、終了待ち

初心者が最初に覚えるべきなのはConsole.ReadLineです。

数値入力も、まずはReadLineで文字列として受け取り、そのあとint.ParseTryParseで変換します。

7. 入力処理でよくあるエラーと対策

C#の入力処理では、入力値が想定どおりでないとエラーが発生することがあります。

特に多いのは、数値に変換できない文字列をint.Parsedouble.Parseで変換しようとするケースです。

ここでは、初心者がよく遭遇する入力エラーと対策を解説します。

7-1. FormatExceptionが発生する原因

FormatExceptionは、文字列の形式が正しくないときに発生する例外です。

たとえば、整数に変換したいのに、文字が入力された場合です。

C#
int number = int.Parse("abc");

また、空文字も整数には変換できません。

C#
int number = int.Parse("");

このようなエラーを防ぐには、TryParseを使います。

C#
if (int.TryParse(input, out int number))
{
Console.WriteLine("数値: " + number);
}
else
{
Console.WriteLine("整数を入力してください。");
}

入力値をそのまま信用せず、変換できるかどうかを確認することが大切です。

7-2. 空文字や未入力への対応

ユーザーが何も入力せずにEnterキーを押すと、空文字が入力されます。

C#
Console.Write("名前を入力してください: ");
string name = Console.ReadLine();

if (name == "")
{
Console.WriteLine("名前が入力されていません。");
}
else
{
Console.WriteLine("こんにちは、" + name + "さん");
}

より実用的には、string.IsNullOrWhiteSpaceを使うと便利です。

C#
if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("名前を入力してください。");
}

string.IsNullOrWhiteSpaceは、null、空文字、スペースだけの文字列をまとめて判定できます。

入力チェックでは非常によく使うため、覚えておきましょう。

7-3. nullが返る可能性と注意点

Console.ReadLineは、通常のキーボード入力では文字列を返しますが、入力ストリームの終わりなどの状況ではnullが返る可能性があります。

そのため、厳密に書くなら次のようにstring?として扱うことがあります。

C#
string? input = Console.ReadLine();

初心者向けの簡単なコンソールアプリでは、まずstring input = Console.ReadLine();の形で学んでも問題ありません。

ただし、null許容参照型が有効なプロジェクトでは、警告が表示されることがあります。

安全に扱いたい場合は、次のように書けます。

C#
string input = Console.ReadLine() ?? "";

この書き方では、Console.ReadLine()nullを返した場合でも、空文字""として扱えます。

7-4. 全角数字や余分なスペースへの対策

ユーザー入力では、余分なスペースが入ることがあります。

  123  

この場合、前後の空白を取り除くにはTrimを使います。

C#
string input = Console.ReadLine();
input = input.Trim();

int number = int.Parse(input);

Trimを使うと、文字列の前後にある空白を取り除けます。

また、日本語環境では全角数字が入力されることもあります。

123

標準的なint.Parseでは、入力形式や環境によって期待どおりに変換できないことがあります。初心者向けのプログラムでは、まず「半角数字で入力してください」とメッセージを出すのがわかりやすい対策です。

C#
Console.Write("年齢を半角数字で入力してください: ");

実用的なプログラムでは、全角数字を半角数字に変換する処理を追加することもあります。

7-5. Trimを使って入力値を整える

Trimは、入力値を整えるときによく使います。

C#
Console.Write("名前を入力してください: ");
string name = Console.ReadLine() ?? "";

name = name.Trim();

if (string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("名前が入力されていません。");
}
else
{
Console.WriteLine("こんにちは、" + name + "さん");
}

数値入力でも、Trimを使ってからTryParseすると安全です。

C#
Console.Write("整数を入力してください: ");
string input = Console.ReadLine() ?? "";

input = input.Trim();

if (int.TryParse(input, out int number))
{
Console.WriteLine("入力された数値: " + number);
}
else
{
Console.WriteLine("整数を入力してください。");
}

入力処理では、受け取った値をそのまま使うのではなく、必要に応じてTrimIsNullOrWhiteSpaceで整えることが大切です。

8. 実践サンプルで学ぶC#の入力処理

ここからは、実際のサンプルコードを通してC#の入力処理を確認していきます。

文字列入力、数値入力、エラー対策、複数入力を組み合わせることで、より実践的なプログラムを作れるようになります。

8-1. 名前と年齢を入力して表示するプログラム

名前と年齢を入力し、結果を表示する基本的なプログラムです。

C#
using System;

class Program
{
static void Main()
{
Console.Write("名前を入力してください: ");
string name = Console.ReadLine() ?? "";

Console.Write("年齢を入力してください: ");
string ageText = Console.ReadLine() ?? "";

if (int.TryParse(ageText, out int age))
{
Console.WriteLine(name + "さんは" + age + "歳です。");
}
else
{
Console.WriteLine("年齢は整数で入力してください。");
}
}
}

実行例です。

名前を入力してください: 山田
年齢を入力してください: 22
山田さんは22歳です。

このサンプルでは、名前は文字列として受け取り、年齢はint.TryParseで整数に変換しています。

8-2. 2つの数値を入力して計算するプログラム

2つの整数を入力して、足し算、引き算、掛け算を行うプログラムです。

C#
using System;

class Program
{
static void Main()
{
Console.Write("1つ目の整数を入力してください: ");
string input1 = Console.ReadLine() ?? "";

Console.Write("2つ目の整数を入力してください: ");
string input2 = Console.ReadLine() ?? "";

if (int.TryParse(input1, out int a) && int.TryParse(input2, out int b))
{
Console.WriteLine("足し算: " + (a + b));
Console.WriteLine("引き算: " + (a - b));
Console.WriteLine("掛け算: " + (a * b));

if (b != 0)
{
Console.WriteLine("割り算: " + ((double)a / b));
}
else
{
Console.WriteLine("割り算は、0で割れないため計算できません。");
}
}
else
{
Console.WriteLine("整数を正しく入力してください。");
}
}
}

割り算では、0で割るとエラーになるため、b != 0で確認しています。

入力値のチェックだけでなく、計算時のエラーにも注意しましょう。

8-3. 入力エラー時に再入力させるプログラム

正しい整数が入力されるまで繰り返すプログラムです。

C#
using System;

class Program
{
static void Main()
{
int number;

while (true)
{
Console.Write("整数を入力してください: ");
string input = Console.ReadLine() ?? "";

if (int.TryParse(input.Trim(), out number))
{
break;
}

Console.WriteLine("入力エラーです。半角数字で整数を入力してください。");
}

Console.WriteLine("入力された整数は" + number + "です。");
}
}

実行例です。

整数を入力してください: abc
入力エラーです。半角数字で整数を入力してください。
整数を入力してください: 100
入力された整数は100です。

このように書くと、ユーザーが誤入力しても再入力できます。

実用的なC#の入力処理では、while文とTryParseの組み合わせが非常によく使われます。

8-4. 複数の点数を入力して合計・平均を出すプログラム

複数の点数を入力し、合計点と平均点を表示するプログラムです。

C#
using System;

class Program
{
static void Main()
{
Console.Write("点数の数を入力してください: ");
string countText = Console.ReadLine() ?? "";

if (!int.TryParse(countText, out int count) || count <= 0)
{
Console.WriteLine("点数の数は1以上の整数で入力してください。");
return;
}

int total = 0;

for (int i = 0; i < count; i++)
{
int score;

while (true)
{
Console.Write((i + 1) + "個目の点数を入力してください: ");
string scoreText = Console.ReadLine() ?? "";

if (int.TryParse(scoreText, out score))
{
break;
}

Console.WriteLine("点数は整数で入力してください。");
}

total += score;
}

double average = (double)total / count;

Console.WriteLine("合計点: " + total);
Console.WriteLine("平均点: " + average);
}
}

実行例です。

点数の数を入力してください: 3
1個目の点数を入力してください: 80
2個目の点数を入力してください: 90
3個目の点数を入力してください: 70
合計点: 240
平均点: 80

このサンプルでは、入力回数もユーザーから受け取り、各点数についても入力チェックを行っています。

C#の入力処理、数値変換、繰り返し、条件分岐をまとめて練習できる内容です。

9. C#入力処理の初心者向け練習問題

C#の入力処理は、実際にコードを書いて練習することで理解が深まります。

ここでは、初心者向けの練習問題を紹介します。

最初は答えを見ずに、自分でコードを書いてみましょう。

9-1. 文字列入力の練習問題

ユーザーに名前を入力してもらい、次のように表示するプログラムを作ってください。

こんにちは、〇〇さん!

入力例です。

名前を入力してください: 田中

出力例です。

こんにちは、田中さん!

ポイントは、Console.ReadLineで文字列を受け取り、Console.WriteLineで表示することです。

解答例です。

C#
using System;

class Program
{
static void Main()
{
Console.Write("名前を入力してください: ");
string name = Console.ReadLine() ?? "";

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

9-2. 整数入力の練習問題

ユーザーに年齢を入力してもらい、来年の年齢を表示するプログラムを作ってください。

入力例です。

年齢を入力してください: 20

出力例です。

来年は21歳です。

解答例です。

C#
using System;

class Program
{
static void Main()
{
Console.Write("年齢を入力してください: ");
int age = int.Parse(Console.ReadLine());

Console.WriteLine("来年は" + (age + 1) + "歳です。");
}
}

入力ミスにも対応したい場合は、int.TryParseを使いましょう。

C#
using System;

class Program
{
static void Main()
{
Console.Write("年齢を入力してください: ");
string input = Console.ReadLine() ?? "";

if (int.TryParse(input, out int age))
{
Console.WriteLine("来年は" + (age + 1) + "歳です。");
}
else
{
Console.WriteLine("整数を入力してください。");
}
}
}

9-3. 小数入力の練習問題

ユーザーに身長を入力してもらい、その値を表示するプログラムを作ってください。

入力例です。

身長を入力してください: 170.5

出力例です。

あなたの身長は170.5cmです。

解答例です。

C#
using System;

class Program
{
static void Main()
{
Console.Write("身長を入力してください: ");
string input = Console.ReadLine() ?? "";

if (double.TryParse(input, out double height))
{
Console.WriteLine("あなたの身長は" + height + "cmです。");
}
else
{
Console.WriteLine("小数または整数で入力してください。");
}
}
}

小数を扱う場合は、double.TryParseを使うと安全です。

9-4. TryParseを使ったエラー対策の練習問題

ユーザーに整数を入力してもらい、数値以外が入力された場合は再入力させるプログラムを作ってください。

出力例です。

整数を入力してください: abc
整数ではありません。
整数を入力してください: 10
入力された数値は10です。

解答例です。

C#
using System;

class Program
{
static void Main()
{
int number;

while (true)
{
Console.Write("整数を入力してください: ");
string input = Console.ReadLine() ?? "";

if (int.TryParse(input, out number))
{
break;
}

Console.WriteLine("整数ではありません。");
}

Console.WriteLine("入力された数値は" + number + "です。");
}
}

while文とTryParseを組み合わせることで、正しい入力があるまで繰り返せます。

9-5. 複数入力を扱う練習問題

1行にスペース区切りで2つの整数を入力し、その合計を表示するプログラムを作ってください。

入力例です。

10 20

出力例です。

合計は30です。

解答例です。

C#
using System;

class Program
{
static void Main()
{
Console.Write("2つの整数をスペース区切りで入力してください: ");
string[] inputs = (Console.ReadLine() ?? "")
.Split(' ', StringSplitOptions.RemoveEmptyEntries);

if (inputs.Length != 2)
{
Console.WriteLine("2つの整数を入力してください。");
return;
}

if (int.TryParse(inputs[0], out int a) && int.TryParse(inputs[1], out int b))
{
Console.WriteLine("合計は" + (a + b) + "です。");
}
else
{
Console.WriteLine("整数を入力してください。");
}
}
}

複数入力では、Splitで分割したあとに、配列の要素数や数値変換の成功を確認すると安全です。

10. C#の入力に関するよくある質問

ここでは、C#の入力処理で初心者が疑問に感じやすいポイントをQ&A形式で解説します。

10-1. Console.ReadLineで入力できないときの原因は?

Console.ReadLineで入力できないように見える場合、いくつかの原因が考えられます。

まず、コンソールアプリとして実行しているか確認しましょう。WindowsフォームアプリやWPFアプリでは、通常Console.ReadLineで入力を受け取る構成にはなっていません。

また、Visual Studioで実行したときに画面がすぐ閉じる場合は、プログラムの最後に入力待ちを入れると確認しやすくなります。

C#
Console.WriteLine("終了するにはEnterキーを押してください。");
Console.ReadLine();

VS Codeで実行する場合は、ターミナル上でdotnet runを実行すると入力を確認しやすいです。

dotnet run

10-2. int.Parseとint.TryParseはどちらを使うべき?

初心者にはint.TryParseがおすすめです。

int.Parseは、変換できない文字列が入力されるとエラーになります。

C#
int number = int.Parse("abc");

一方、int.TryParseは変換に失敗してもプログラムが止まりません。

C#
if (int.TryParse(input, out int number))
{
Console.WriteLine(number);
}
else
{
Console.WriteLine("整数を入力してください。");
}

学習用の短いサンプルではint.Parseを使ってもよいですが、ユーザー入力を扱う場合はint.TryParseを使う方が安全です。

10-3. 文字列と数値を同時に入力できる?

できます。

たとえば、1行ずつ入力する方法があります。

C#
Console.Write("名前を入力してください: ");
string name = Console.ReadLine() ?? "";

Console.Write("年齢を入力してください: ");
int age = int.Parse(Console.ReadLine());

Console.WriteLine(name + "さんは" + age + "歳です。");

また、1行にまとめて入力してSplitで分割することもできます。

C#
Console.Write("名前と年齢をスペース区切りで入力してください: ");
string[] inputs = (Console.ReadLine() ?? "").Split(' ');

string name = inputs[0];
int age = int.Parse(inputs[1]);

Console.WriteLine(name + "さんは" + age + "歳です。");

ただし、名前にスペースが含まれる場合は分割が難しくなるため、初心者のうちは1行ずつ入力する方法がおすすめです。

10-4. 入力待ちで画面が止まるのはなぜ?

Console.ReadLineは、ユーザーがEnterキーを押すまで処理を待ちます。

そのため、次のコードを実行すると、入力待ちの状態になります。

C#
string input = Console.ReadLine();

これはエラーではありません。

プログラムがユーザーの入力を待っている状態です。

入力を完了するには、キーボードで文字を入力してEnterキーを押します。

また、プログラムの最後にConsole.ReadLineを書くと、画面がすぐ閉じないようにできます。

C#
Console.WriteLine("終了するにはEnterキーを押してください。");
Console.ReadLine();

10-5. Visual StudioやVS Codeで入力を確認する方法

Visual Studioでは、コンソールアプリのプロジェクトを作成して実行すれば、コンソール画面で入力を確認できます。

基本的なコードは次のとおりです。

C#
Console.Write("名前を入力してください: ");
string name = Console.ReadLine();

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

VS Codeで確認する場合は、ターミナルを開いて次のように実行します。

dotnet run

Console.ReadLineがある場所で入力待ちになるため、ターミナル上で文字を入力してEnterキーを押します。

入力できない場合は、コードがコンソールアプリとして実行されているか、実行環境がターミナル入力に対応しているかを確認しましょう。

まとめ

C#で入力を受け取る基本は、Console.ReadLineを使うことです。

Console.ReadLineは、ユーザーが入力した1行分の文字列を受け取ります。名前や文章などの文字列入力なら、そのままstring型として扱えます。

一方、年齢、点数、金額などを数値として扱いたい場合は、int.Parsedouble.ParseConvert.ToInt32TryParseなどで型変換が必要です。

特に、ユーザー入力を安全に扱うなら、int.TryParsedouble.TryParseを使うのがおすすめです。Parseは変換に失敗するとエラーになりますが、TryParseなら失敗時の処理を書けるため、入力ミスに強いプログラムを作れます。

また、複数の入力を扱う場合は、Console.ReadLineを複数回使う方法や、Splitでスペース区切りの値を分割する方法があります。配列やfor文と組み合わせることで、複数データの入力処理も効率よく書けます。

C#の入力処理で押さえるべきポイントは次のとおりです。

内容使うもの
1行の文字列入力Console.ReadLine
画面への表示Console.WriteLine
入力前の案内表示Console.Write
整数への変換int.Parseint.TryParse
小数への変換double.Parsedouble.TryParse
複数入力の分割Split
入力値の空白除去Trim
空文字チェックstring.IsNullOrWhiteSpace

C#の入力は、コンソールアプリの基本であり、プログラミング学習の重要なステップです。

まずはConsole.ReadLineで文字列を受け取り、次に数値変換やTryParseによるエラー対策を練習していきましょう。