基礎から学ぶC#入門 90日コース | C#基本文法 - Day 5:コンソール入力

C# 90日で身につけるC#
スポンサーリンク
スポンサーリンク
  1. Day 5 のゴールと全体イメージ
  2. コンソール入力の基本:Console.ReadLine()
    1. Console.ReadLine() は「1行分の入力を受け取る」
    2. 文字列として受け取る基本例
  3. 文字列入力を使った簡単な対話プログラム
    1. 複数項目を入力してもらう
  4. 数値変換の必要性:文字列から数値へ
    1. 入力は必ず「文字列」で来る
    2. Parse() を使った基本的な数値変換
  5. Parse() の注意点:入力エラーで例外が発生する
    1. 数字以外が入力されるとエラーになる
  6. TryParse() による安全な数値変換
    1. TryParse() は「変換できるかどうか」を教えてくれる
    2. TryParse() の具体例
  7. 入力エラー対策の基本パターン
    1. 「数字かどうか」をチェックしてから使う
    2. 繰り返し入力させるパターン
  8. 文字列入力+数値変換の総合例:簡易プロフィール+年齢チェック
    1. Day 5 の学びをまとめて使う
  9. Day 5 のまとめ
  10. Day 5 ミニ課題のゴール
  11. 年齢計算アプリを日本語で設計する
    1. まずは「何を入力して、何を計算するか」を言葉で整理する
  12. Console.ReadLine() で生まれた年を入力してもらう
    1. 文字列として入力を受け取る
  13. Parse() を使って文字列を数値に変換する
    1. 「文字列 → int」に変換して年齢を計算する
  14. TryParse() で安全に数値変換する
    1. 「変換できるかどうか」を確認しながら年齢を計算する
  15. 入力エラー対策:正しい値が入るまで繰り返す
    1. while ループと TryParse を組み合わせる
  16. 年齢計算アプリの完成版テンプレート
    1. 名前も入力して、少しだけ「アプリらしさ」を出す
  17. Day 5 ミニ課題のまとめ

Day 5 のゴールと全体イメージ

Day 5 では、「コンソールからユーザーの入力を受け取る」方法を学びます。 これまでのプログラムは、コードの中に値を書き込んでいましたが、 いよいよ「ユーザーがキーボードから入力した値」を扱えるようになります。

学ぶ項目は次のとおりです。

  • Console.ReadLine()
  • 文字列入力
  • 数値変換
  • Parse()
  • TryParse()
  • 入力エラー対策

これらを、初心者向けにかみ砕きながら、例題とコードを交えてステップバイステップで説明していきます。

コンソール入力の基本:Console.ReadLine()

Console.ReadLine() は「1行分の入力を受け取る」

Console.ReadLine() は、コンソール画面からユーザーが入力した「1行分の文字列」を受け取るためのメソッドです。

  • ユーザーがキーボードで文字を入力する
  • Enter キーを押す
  • その 1行分の文字列が Console.ReadLine() の戻り値になる

という流れになります。

文字列として受け取る基本例

まずは、名前を入力してもらう簡単な例を見てみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("あなたの名前を入力してください:");

        // Console.ReadLine() で 1 行分の文字列を受け取ります
        string name = Console.ReadLine();  // ユーザーが入力した文字列が name に入る

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

        Console.ReadLine(); // 画面がすぐ閉じないように待機
    }
}
C#

ここでのポイントは、

  • Console.ReadLine() の戻り値は「文字列(string)」であること
  • 入力された内容をそのまま表示することで、入力と出力の流れを確認できること

です。

文字列入力を使った簡単な対話プログラム

複数項目を入力してもらう

次に、名前と趣味を入力してもらう例です。

using System;

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

        Console.WriteLine("趣味を入力してください:");
        string hobby = Console.ReadLine(); // 趣味を入力

        Console.WriteLine("=== プロフィール ===");
        Console.WriteLine($"名前:{name}");
        Console.WriteLine($"趣味:{hobby}");

        Console.ReadLine();
    }
}
C#

ここでの重要ポイントは、

  • Console.ReadLine() は何度でも呼び出せること
  • 入力された文字列をそのまま string 変数に入れて扱えること

です。

数値変換の必要性:文字列から数値へ

入力は必ず「文字列」で来る

Console.ReadLine() は、ユーザーが何を入力しても「文字列」として受け取ります。

例えば、年齢を入力してもらう場合でも、最初は文字列です。

Console.WriteLine("年齢を入力してください:");
string ageText = Console.ReadLine();  // ここではまだ文字列
C#

しかし、年齢を「計算」に使いたい場合は、

  • 文字列 → 整数(int

に変換する必要があります。

Parse() を使った基本的な数値変換

int.Parse() を使うと、文字列を整数に変換できます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("年齢を入力してください:");
        string ageText = Console.ReadLine();  // 文字列として入力を受け取る

        // 文字列を int に変換します
        int age = int.Parse(ageText);  // "30" → 30 のように変換されます

        Console.WriteLine($"あなたは {age} 歳ですね。");

        Console.ReadLine();
    }
}
C#

ここでのポイントは、

  • int.Parse(文字列) で「数値の文字列」を int に変換できること
  • 入力が "30" のような「数字だけの文字列」であることが前提であること

です。

Parse() の注意点:入力エラーで例外が発生する

数字以外が入力されるとエラーになる

int.Parse() は便利ですが、ユーザーが数字以外を入力した場合、 例外(エラー)が発生してプログラムが止まってしまう という問題があります。

例えば、

  • "abc"
  • 空文字 ""
  • "30歳"

などを int.Parse() しようとすると、FormatException が発生します。

初心者の方にとっては、

Parse は「ちゃんと数字が入っている前提」で使うもの

と覚えておくとよいです。

TryParse() による安全な数値変換

TryParse() は「変換できるかどうか」を教えてくれる

TryParse() は、

  • 変換に成功したかどうかを bool で返す
  • 変換結果を「out 引数」に入れてくれる

という、安全な数値変換のためのメソッドです。

int.TryParse() の基本形は次のようになります。

bool result = int.TryParse(文字列, out 変換後の値);
C#

TryParse() の具体例

年齢を安全に数値変換する例を見てみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("年齢を入力してください:");
        string ageText = Console.ReadLine();  // ユーザー入力(文字列)

        // TryParse を使って安全に変換を試みます
        bool isParsed = int.TryParse(ageText, out int age);

        if (isParsed)
        {
            // 変換に成功した場合
            Console.WriteLine($"あなたは {age} 歳ですね。");
        }
        else
        {
            // 変換に失敗した場合(数字以外が入力されたなど)
            Console.WriteLine("年齢は数字で入力してください。");
        }

        Console.ReadLine();
    }
}
C#

ここでの重要ポイントは、

  • TryParse は「変換できたかどうか」を bool で返すこと
  • 変換に成功したときだけ、out で受け取った変数に値が入ること
  • 失敗した場合でも例外は発生せず、プログラムが止まらないこと

です。

入力エラー対策の基本パターン

「数字かどうか」をチェックしてから使う

ユーザー入力は、必ずしも期待どおりとは限りません。 そのため、入力をそのまま信じず、チェックしてから使う ことが大切です。

TryParse() を使うと、次のような「入力エラー対策」ができます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("商品の価格を入力してください(数字のみ):");
        string priceText = Console.ReadLine();

        bool isParsed = decimal.TryParse(priceText, out decimal price);

        if (!isParsed)
        {
            Console.WriteLine("価格は数字で入力してください。");
            Console.ReadLine();
            return; // プログラムを終了
        }

        Console.WriteLine($"入力された価格は {price} 円です。");

        Console.ReadLine();
    }
}
C#

ここでのポイントは、

  • TryParse の結果を見て「成功したときだけ次の処理に進む」こと
  • 失敗した場合は、メッセージを表示して処理を中断すること

です。

繰り返し入力させるパターン

もう一歩進んで、「正しい値が入力されるまで繰り返す」こともできます。

using System;

class Program
{
    static void Main(string[] args)
    {
        decimal price;

        while (true)
        {
            Console.WriteLine("商品の価格を入力してください(数字のみ):");
            string priceText = Console.ReadLine();

            bool isParsed = decimal.TryParse(priceText, out price);

            if (isParsed)
            {
                // 正しく入力されたらループを抜ける
                break;
            }

            Console.WriteLine("入力エラー:価格は数字で入力してください。もう一度入力してください。");
        }

        Console.WriteLine($"最終的に入力された価格は {price} 円です。");

        Console.ReadLine();
    }
}
C#

ここでの重要ポイントは、

  • while (true)break を組み合わせて「正しい入力が来るまで繰り返す」こと
  • ユーザーに「何が間違っているか」をメッセージで伝えること

です。

文字列入力+数値変換の総合例:簡易プロフィール+年齢チェック

Day 5 の学びをまとめて使う

最後に、Day 5 の内容をまとめた例として、 名前と年齢を入力してもらい、年齢を安全に数値変換してからメッセージを表示するプログラムを書いてみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 名前の入力(文字列)
        Console.WriteLine("名前を入力してください:");
        string name = Console.ReadLine();

        // 年齢の入力(文字列 → 数値)
        int age;

        while (true)
        {
            Console.WriteLine("年齢を入力してください(数字のみ):");
            string ageText = Console.ReadLine();

            // TryParse で安全に変換
            bool isParsed = int.TryParse(ageText, out age);

            if (isParsed)
            {
                // 正しく変換できたらループを抜ける
                break;
            }

            Console.WriteLine("入力エラー:年齢は数字で入力してください。");
        }

        // 入力された情報を使ってメッセージを表示
        Console.WriteLine("=== プロフィール ===");
        Console.WriteLine($"名前:{name}");
        Console.WriteLine($"年齢:{age} 歳");

        // 年齢に応じたメッセージ(比較演算子と論理演算子の応用)
        if (age >= 20)
        {
            Console.WriteLine("成人ですね。");
        }
        else
        {
            Console.WriteLine("未成年ですね。");
        }

        Console.ReadLine();
    }
}
C#

このコードの中には、

  • Console.ReadLine() → 文字列入力
  • 文字列入力 → string 変数で管理
  • int.TryParse() → 安全な数値変換
  • 入力エラー対策 → whileTryParse を組み合わせて再入力させる

という Day 5 の学習項目がすべて含まれています。

Day 5 のまとめ

Day 5 では、コンソール入力を通して、

  • Console.ReadLine() でユーザーの入力を「文字列」として受け取る
  • 文字列入力をそのまま表示して、入力と出力の流れを確認する
  • Parse() で文字列を数値に変換する(ただし入力が正しい前提)
  • TryParse() で「変換できるかどうか」を確認しながら安全に数値変換する
  • 入力エラー対策として、失敗時にメッセージを表示したり、再入力を促したりする

という流れを学びました。

コンソール入力を使えるようになると、

  • ユーザーと対話するプログラム
  • 簡易計算機
  • 家計簿やプロフィール入力ツール

など、ぐっと「実用的なプログラム」に近づいていきます。

ぜひ、

  • 自分で項目を増やして、入力フォームのようなプログラムを作ってみる
  • int.TryParsedecimal.TryParse を使って、数値入力の練習をする
  • 入力エラー時のメッセージを工夫して、ユーザーに優しいプログラムを目指す

といったアレンジをしながら、「入力を受け取り、チェックして、安全に使う」感覚を育てていってください。


Day 5 ミニ課題のゴール

Day 5 のミニ課題では、「年齢計算アプリ」を題材にして、コンソール入力の基本を一通り体験していきます。 キーボードから生年月日や年齢に関する情報を入力してもらい、それを使って「現在の年齢」を計算する流れを作ります。

ここで扱うポイントは次のとおりです。

  • Console.ReadLine()
  • 文字列入力
  • 数値変換
  • Parse()
  • TryParse()
  • 入力エラー対策

これらをステップバイステップで組み立てながら、初心者の方にも分かりやすい形でコードを作っていきます。

年齢計算アプリを日本語で設計する

まずは「何を入力して、何を計算するか」を言葉で整理する

年齢計算アプリの基本的な流れを、日本語で整理すると次のようになります。

  1. ユーザーに「生まれた年」を入力してもらう
  2. 現在の年(ここでは簡単のために固定値を使う)を用意する
  3. 「現在の年 − 生まれた年」で年齢を計算する
  4. 結果を画面に表示する
  5. 入力が数字でない場合は、エラーメッセージを表示して再入力してもらう

この「日本語の設計」を、そのまま C# のコードに落とし込んでいきます。

Console.ReadLine() で生まれた年を入力してもらう

文字列として入力を受け取る

まずは、生まれた年をコンソールから入力してもらいます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("生まれた年を西暦で入力してください(例:1990):");

        // Console.ReadLine() で 1 行分の文字列を受け取ります
        string birthYearText = Console.ReadLine();  // ユーザーが入力した文字列が入る

        Console.WriteLine($"入力された生まれた年(文字列):{birthYearText}");

        Console.ReadLine(); // 画面がすぐ閉じないように待機
    }
}
C#

ここでのポイントは、

  • Console.ReadLine() は「必ず文字列(string)」を返すこと
  • 入力された値をそのまま表示して、入力の流れを確認できること

です。

Parse() を使って文字列を数値に変換する

「文字列 → int」に変換して年齢を計算する

次に、入力された生まれた年を整数に変換して、年齢を計算してみます。 ここでは、現在の年を仮に 2025 とします。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("生まれた年を西暦で入力してください(例:1990):");
        string birthYearText = Console.ReadLine();  // 文字列として入力を受け取る

        // 文字列を int に変換します(Parse を使用)
        int birthYear = int.Parse(birthYearText);   // "1990" → 1990 のように変換されます

        int currentYear = 2025;                     // 現在の年(ここでは固定値)
        int age = currentYear - birthYear;          // 年齢を計算

        Console.WriteLine($"今年({currentYear}年)の年齢は {age} 歳です。");

        Console.ReadLine();
    }
}
C#

ここでの重要ポイントは、

  • int.Parse(文字列) で「数字だけの文字列」を整数に変換できること
  • 入力が "1990" のような「数字だけ」であることが前提であること
  • currentYear - birthYear というシンプルな式で年齢を計算していること

です。

ただし、Parse() は入力が数字でない場合にエラー(例外)を出してしまうため、 実際のアプリではもう少し安全な方法が必要になります。

TryParse() で安全に数値変換する

「変換できるかどうか」を確認しながら年齢を計算する

TryParse() を使うと、入力が数字かどうかをチェックしながら変換できます。

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("生まれた年を西暦で入力してください(例:1990):");
        string birthYearText = Console.ReadLine();  // ユーザー入力(文字列)

        // TryParse を使って安全に変換を試みます
        bool isParsed = int.TryParse(birthYearText, out int birthYear);

        if (isParsed)
        {
            int currentYear = 2025;
            int age = currentYear - birthYear;

            Console.WriteLine($"今年({currentYear}年)の年齢は {age} 歳です。");
        }
        else
        {
            Console.WriteLine("入力エラー:生まれた年は数字で入力してください。");
        }

        Console.ReadLine();
    }
}
C#

ここでの重要ポイントは、

  • TryParse は「変換に成功したかどうか」を bool で返すこと
  • 成功したときだけ birthYear に値が入ること
  • 失敗しても例外は発生せず、プログラムが止まらないこと

です。

入力エラー対策:正しい値が入るまで繰り返す

while ループと TryParse を組み合わせる

年齢計算アプリとしては、「間違った入力があったらもう一度入力してもらう」方が親切です。 そこで、while ループと TryParse を組み合わせて、正しい値が入るまで繰り返す形にしてみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        int birthYear;

        while (true)
        {
            Console.WriteLine("生まれた年を西暦で入力してください(例:1990):");
            string birthYearText = Console.ReadLine();

            // TryParse で安全に変換
            bool isParsed = int.TryParse(birthYearText, out birthYear);

            if (isParsed)
            {
                // 正しく変換できたらループを抜ける
                break;
            }

            Console.WriteLine("入力エラー:生まれた年は数字だけで入力してください。もう一度入力してください。");
        }

        int currentYear = 2025;
        int age = currentYear - birthYear;

        Console.WriteLine("=== 年齢計算結果 ===");
        Console.WriteLine($"生まれた年:{birthYear} 年");
        Console.WriteLine($"今年({currentYear}年)の年齢:{age} 歳");

        Console.ReadLine();
    }
}
C#

ここでの重要ポイントは、

  • while (true)break を使って「正しい入力が来るまで繰り返す」こと
  • エラー時に「何が間違っているか」をメッセージで伝えていること
  • 正しい入力が得られたら、年齢計算に進むこと

です。

年齢計算アプリの完成版テンプレート

名前も入力して、少しだけ「アプリらしさ」を出す

最後に、Day 5 の学びをすべて盛り込んだ「年齢計算アプリ」のテンプレート例を示します。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 名前の入力(文字列)
        Console.WriteLine("名前を入力してください:");
        string name = Console.ReadLine();

        // 生まれた年の入力(文字列 → 数値)
        int birthYear;

        while (true)
        {
            Console.WriteLine("生まれた年を西暦で入力してください(例:1990):");
            string birthYearText = Console.ReadLine();

            // TryParse で安全に変換
            bool isParsed = int.TryParse(birthYearText, out birthYear);

            if (isParsed)
            {
                // 正しく変換できたらループを抜ける
                break;
            }

            Console.WriteLine("入力エラー:生まれた年は数字だけで入力してください。");
        }

        // 現在の年(ここでは固定値)
        int currentYear = 2025;

        // 年齢を計算
        int age = currentYear - birthYear;

        Console.WriteLine();
        Console.WriteLine("=== 年齢計算アプリ ===");
        Console.WriteLine($"名前:{name} さん");
        Console.WriteLine($"生まれた年:{birthYear} 年");
        Console.WriteLine($"今年({currentYear}年)の年齢:{age} 歳");

        // 年齢に応じた簡単なメッセージ
        if (age >= 20)
        {
            Console.WriteLine("成人ですね。");
        }
        else
        {
            Console.WriteLine("未成年ですね。");
        }

        Console.ReadLine();
    }
}
C#

このコードの中には、

  • Console.ReadLine() → 名前・生まれた年の入力
  • 文字列入力 → string 変数で管理
  • int.TryParse() → 生まれた年の安全な数値変換
  • 入力エラー対策 → ループで再入力を促す
  • 計算結果の表示 → 年齢とメッセージを出力

という Day 5 の学習項目がすべて含まれています。

Day 5 ミニ課題のまとめ

年齢計算アプリを通して、

  • コンソールから文字列入力を受け取る
  • 文字列を数値に変換して計算に使う
  • Parse()TryParse() の違いを体験する
  • 入力エラー対策として、失敗時にメッセージを表示し、再入力を促す

という一連の流れを確認しました。

コンソール入力を使えるようになると、 プログラムが「ユーザーと対話するもの」に変わっていきます。

ぜひ、

  • 現在の年を自分で変更してみる
  • 生まれた月や日も入力して、より正確な年齢計算に挑戦してみる
  • 入力エラー時のメッセージを工夫して、ユーザーに優しいアプリにしてみる

といったアレンジをしながら、「入力を受け取り、チェックして、安全に使う」感覚を育てていってください。

タイトルとURLをコピーしました