[C#] Console.ReadLineメソッドの使い方 – コンソールから文字列を入力する

Console.ReadLineメソッドは、C#でコンソールからユーザーの入力を受け取るために使用されます。

このメソッドは、ユーザーがEnterキーを押すまでの入力を文字列として返します。

例えば、string input = Console.ReadLine();と記述することで、ユーザーが入力した文字列をinput変数に格納できます。

入力されたデータは常に文字列として扱われるため、数値などに変換する場合はint.Parsedouble.Parseなどを使用します。

この記事でわかること
  • Console.ReadLineメソッドの基本的な使い方
  • 数値入力のための変換方法
  • エラーハンドリングの重要性
  • 複数行の入力や条件分岐の活用
  • 他の入力メソッドとの違い

目次から探す

Console.ReadLineメソッドとは

Console.ReadLineメソッドは、C#のコンソールアプリケーションにおいて、ユーザーからの入力を受け取るためのメソッドです。

このメソッドは、コンソールウィンドウでユーザーが入力した文字列を読み取り、その内容を文字列として返します。

引数

Console.ReadLineメソッドは引数を持ちません。

呼び出すだけで、ユーザーの入力を待機します。

戻り値

このメソッドは、ユーザーが入力した文字列を返します。

ユーザーが何も入力せずにEnterキーを押した場合、空の文字列("")が返されます。

このメソッドは、ユーザーからのデータを取得する際に非常に便利で、特に対話型のアプリケーションやデバッグ時に役立ちます。

例えば、ユーザー名やパスワードなどの情報を取得する際に使用されます。

Console.ReadLineの基本的な使い方

文字列の入力を受け取る

Console.ReadLineメソッドを使用すると、ユーザーからの文字列入力を簡単に受け取ることができます。

以下のサンプルコードでは、コンソールに「文字列を入力してください」と表示し、ユーザーの入力を待機します。

using System;
class Program
{
    static void Main()
    {
        // ユーザーに入力を促すメッセージを表示
        Console.WriteLine("文字列を入力してください:");
        
        // ユーザーの入力を待機
        string input = Console.ReadLine();
        
        // 入力された文字列を表示
        Console.WriteLine("入力された文字列: " + input);
    }
}
文字列を入力してください:
(ユーザーが入力)
入力された文字列: (ユーザーが入力した内容)

入力された文字列を変数に格納する

ユーザーが入力した文字列は、変数に格納することができます。

上記のサンプルコードでは、inputという変数にユーザーの入力を格納しています。

この変数を使って、後続の処理を行うことができます。

入力後の処理の流れ

  1. コンソールにメッセージを表示して、ユーザーに入力を促します。
  2. Console.ReadLineメソッドを呼び出して、ユーザーの入力を待機します。
  3. 入力された文字列を変数に格納します。
  4. 必要に応じて、格納した文字列を使って他の処理を行います。

この流れを理解することで、ユーザーからの入力を効果的に扱うことができるようになります。

Console.ReadLineで数値を入力する方法

文字列から数値への変換

Console.ReadLineメソッドは、ユーザーからの入力を文字列として受け取ります。

数値を扱う場合は、この文字列を適切な数値型に変換する必要があります。

以下に、数値への変換方法を示します。

int.Parseを使った整数の変換

int.Parseメソッドを使用すると、文字列を整数に変換できます。

以下のサンプルコードでは、ユーザーから整数を入力してもらい、その値を整数型の変数に格納します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("整数を入力してください:");
        string input = Console.ReadLine();
        
        // 文字列を整数に変換
        int number = int.Parse(input);
        
        Console.WriteLine("入力された整数: " + number);
    }
}
整数を入力してください:
(ユーザーが整数を入力)
入力された整数: (ユーザーが入力した整数)

double.Parseを使った小数の変換

double.Parseメソッドを使用すると、文字列を小数(倍精度浮動小数点数)に変換できます。

以下のサンプルコードでは、ユーザーから小数を入力してもらい、その値を小数型の変数に格納します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("小数を入力してください:");
        string input = Console.ReadLine();
        
        // 文字列を小数に変換
        double number = double.Parse(input);
        
        Console.WriteLine("入力された小数: " + number);
    }
}
小数を入力してください:
(ユーザーが小数を入力)
入力された小数: (ユーザーが入力した小数)

TryParseを使った安全な変換

int.Parsedouble.Parseは、無効な入力があった場合に例外をスローします。

これを避けるために、TryParseメソッドを使用することが推奨されます。

TryParseは、変換が成功したかどうかを示すブール値を返し、変換結果を出力パラメータとして受け取ります。

以下のサンプルコードでは、ユーザーからの入力を安全に整数に変換します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("整数を入力してください:");
        string input = Console.ReadLine();
        
        // TryParseを使って安全に変換
        if (int.TryParse(input, out int number))
        {
            Console.WriteLine("入力された整数: " + number);
        }
        else
        {
            Console.WriteLine("無効な入力です。整数を入力してください。");
        }
    }
}
整数を入力してください:
(ユーザーが整数を入力)
入力された整数: 123

または

整数を入力してください:
(ユーザーが無効な入力を入力)
無効な入力です。整数を入力してください。

このように、TryParseを使用することで、ユーザーの入力に対して安全に処理を行うことができます。

Console.ReadLineのエラーハンドリング

入力が数値でない場合の対処

ユーザーが数値を入力することを期待している場合でも、実際には無効な入力が行われることがあります。

例えば、文字列や記号が入力された場合、int.Parsedouble.Parseを使用すると例外が発生します。

このような場合に備えて、エラーハンドリングを行うことが重要です。

以下のサンプルコードでは、ユーザーからの入力が数値でない場合にエラーメッセージを表示します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("整数を入力してください:");
        string input = Console.ReadLine();
        
        try
        {
            // 文字列を整数に変換
            int number = int.Parse(input);
            Console.WriteLine("入力された整数: " + number);
        }
        catch (FormatException)
        {
            Console.WriteLine("無効な入力です。整数を入力してください。");
        }
    }
}
整数を入力してください:
(ユーザーが無効な入力を入力)
無効な入力です。整数を入力してください。

TryParseを使った例外処理

TryParseメソッドを使用することで、例外を発生させずに安全に数値変換を行うことができます。

TryParseは、変換が成功したかどうかを示すブール値を返し、変換結果を出力パラメータとして受け取ります。

以下のサンプルコードでは、TryParseを使用してユーザーの入力を安全に整数に変換します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("整数を入力してください:");
        string input = Console.ReadLine();
        
        // TryParseを使って安全に変換
        if (int.TryParse(input, out int number))
        {
            Console.WriteLine("入力された整数: " + number);
        }
        else
        {
            Console.WriteLine("無効な入力です。整数を入力してください。");
        }
    }
}
整数を入力してください:
(ユーザーが無効な入力を入力)
無効な入力です。整数を入力してください。

無限ループを使った再入力の促し方

ユーザーが正しい入力を行うまで、再度入力を促すために無限ループを使用することができます。

以下のサンプルコードでは、ユーザーが有効な整数を入力するまでループを続けます。

using System;
class Program
{
    static void Main()
    {
        int number;
        bool isValidInput = false;
        while (!isValidInput)
        {
            Console.WriteLine("整数を入力してください:");
            string input = Console.ReadLine();
            
            // TryParseを使って安全に変換
            if (int.TryParse(input, out number))
            {
                isValidInput = true; // 有効な入力があった場合、ループを終了
                Console.WriteLine("入力された整数: " + number);
            }
            else
            {
                Console.WriteLine("無効な入力です。もう一度入力してください。");
            }
        }
    }
}
整数を入力してください:
ABC
無効な入力です。もう一度入力してください。
整数を入力してください:
123 
入力された整数: 123

このように、無限ループを使用することで、ユーザーが正しい入力を行うまでプログラムを継続させることができます。

これにより、ユーザーエクスペリエンスを向上させることができます。

Console.ReadLineの応用例

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

Console.ReadLineメソッドを使用して、複数行の入力を受け取ることができます。

ユーザーが特定のキーワードを入力するまで、入力を続けるようにプログラムを構成することが可能です。

以下のサンプルコードでは、ユーザーが「終了」と入力するまで、複数行の文字列を受け取ります。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("入力を続けてください。終了するには「終了」と入力してください。");
        string input;
        
        while ((input = Console.ReadLine()) != "終了")
        {
            Console.WriteLine("入力された内容: " + input);
        }
    }
}
入力を続けてください。終了するには「終了」と入力してください。
(ユーザーが入力)
入力された内容: (ユーザーが入力した内容)
(ユーザーが再度入力)
入力された内容: (ユーザーが再度入力した内容)
終了

入力された文字列を条件分岐に使う

ユーザーからの入力を条件分岐に利用することで、異なる処理を実行することができます。

以下のサンプルコードでは、ユーザーが入力した文字列に応じて異なるメッセージを表示します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("好きな果物を入力してください:");
        string fruit = Console.ReadLine();
        
        if (fruit == "りんご")
        {
            Console.WriteLine("りんごは赤い果物です。");
        }
        else if (fruit == "バナナ")
        {
            Console.WriteLine("バナナは黄色い果物です。");
        }
        else
        {
            Console.WriteLine("その果物は知りません。");
        }
    }
}
好きな果物を入力してください:
(ユーザーが「りんご」と入力)
りんごは赤い果物です。

入力された数値を計算に利用する

ユーザーからの数値入力を受け取り、その値を使って計算を行うことができます。

以下のサンプルコードでは、ユーザーが入力した2つの数値の合計を計算します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("1つ目の整数を入力してください:");
        int firstNumber = int.Parse(Console.ReadLine());
        
        Console.WriteLine("2つ目の整数を入力してください:");
        int secondNumber = int.Parse(Console.ReadLine());
        
        int sum = firstNumber + secondNumber;
        Console.WriteLine("合計: " + sum);
    }
}
1つ目の整数を入力してください:
(ユーザーが入力)
2つ目の整数を入力してください:
(ユーザーが入力)
合計: (合計値)

ユーザーにYes/Noの選択を求める

ユーザーに対してYes/Noの選択を求めることも可能です。

以下のサンプルコードでは、ユーザーに対して「続けますか?」と尋ね、入力に応じて処理を分岐します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("続けますか? (はい/いいえ):");
        string response = Console.ReadLine();
        
        if (response == "はい")
        {
            Console.WriteLine("続行します。");
        }
        else if (response == "いいえ")
        {
            Console.WriteLine("終了します。");
        }
        else
        {
            Console.WriteLine("無効な入力です。");
        }
    }
}
続けますか? (はい/いいえ):
(ユーザーが「はい」と入力)
続行します。

入力を正規表現で検証する

ユーザーからの入力を正規表現を使って検証することができます。

以下のサンプルコードでは、ユーザーが入力したメールアドレスが正しい形式かどうかをチェックします。

using System;
using System.Text.RegularExpressions;
class Program
{
    static void Main()
    {
        Console.WriteLine("メールアドレスを入力してください:");
        string email = Console.ReadLine();
        
        // メールアドレスの正規表現
        string pattern = @"^[^@\s]+@[^@\s]+\.[^@\s]+$";
        
        if (Regex.IsMatch(email, pattern))
        {
            Console.WriteLine("有効なメールアドレスです。");
        }
        else
        {
            Console.WriteLine("無効なメールアドレスです。");
        }
    }
}
メールアドレスを入力してください:
(ユーザーが有効なメールアドレスを入力)
有効なメールアドレスです。

または

メールアドレスを入力してください:
(ユーザーが無効なメールアドレスを入力)
無効なメールアドレスです。

このように、Console.ReadLineメソッドを活用することで、さまざまな応用が可能です。

ユーザーからの入力を効果的に処理し、インタラクティブなアプリケーションを作成することができます。

Console.ReadLineと他の入力メソッドの比較

Console.ReadとConsole.ReadLineの違い

Console.ReadメソッドConsole.ReadLineメソッドは、どちらもユーザーからの入力を受け取るために使用されますが、いくつかの重要な違いがあります。

スクロールできます
特徴Console.ReadConsole.ReadLine
入力の種類単一の文字を読み取る行全体を読み取る
戻り値読み取った文字のASCIIコードint型入力された文字列string型
入力の終了条件Enterキーを押すと次の文字を読み取るEnterキーを押すと行全体を読み取る

以下のサンプルコードでは、Console.Readを使用して単一の文字を読み取ります。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("1文字を入力してください:");
        int charCode = Console.Read(); // 単一の文字を読み取る
        char character = (char)charCode; // ASCIIコードを文字に変換
        Console.WriteLine("入力された文字: " + character);
    }
}
1文字を入力してください:
(ユーザーが文字を入力)
入力された文字: (ユーザーが入力した文字)

Console.ReadKeyとの違い

Console.ReadKeyメソッドは、ユーザーがキーを押すのを待ち、そのキーの情報を返します。

Console.ReadConsole.ReadLineとの違いは、Console.ReadKeyが押されたキーの情報を含むConsoleKeyInfoオブジェクトを返す点です。

スクロールできます
特徴Console.ReadKeyConsole.Read
入力の種類押されたキーの情報単一の文字を読み取る
戻り値ConsoleKeyInfoオブジェクト読み取った文字のASCIIコードint型
入力の終了条件任意のキーを押すEnterキーを押すと次の文字を読み取る

以下のサンプルコードでは、Console.ReadKeyを使用してユーザーが押したキーを表示します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("任意のキーを押してください:");
        ConsoleKeyInfo keyInfo = Console.ReadKey(); // 押されたキーの情報を取得
        Console.WriteLine("\n押されたキー: " + keyInfo.KeyChar);
    }
}
任意のキーを押してください:
(ユーザーがキーを押す)
押されたキー: (ユーザーが押したキー)

標準入力とファイル入力の違い

標準入力は、ユーザーがコンソールから直接入力するデータを指します。

一方、ファイル入力は、ファイルからデータを読み取ることを指します。

これらの違いは、データの取得方法と使用シーンにあります。

スクロールできます
特徴標準入力ファイル入力
データの取得方法コンソールからのユーザー入力ファイルからのデータ読み取り
使用シーン対話型アプリケーションデータ処理やログファイルの読み込み
入力の柔軟性ユーザーが自由に入力可能ファイルの内容に依存

以下のサンプルコードでは、ファイルからの入力を行います。

ファイルの内容を読み取るためには、System.IO名前空間を使用します。

using System;
using System.IO;
class Program
{
    static void Main()
    {
        string filePath = "sample.txt"; // 読み取るファイルのパス
        
        // ファイルの内容を読み取る
        if (File.Exists(filePath))
        {
            string content = File.ReadAllText(filePath);
            Console.WriteLine("ファイルの内容:\n" + content);
        }
        else
        {
            Console.WriteLine("指定されたファイルは存在しません。");
        }
    }
}
ファイルの内容:
(ファイルの内容が表示される)

このように、Console.ReadLineメソッドと他の入力メソッドにはそれぞれ異なる特性があり、用途に応じて使い分けることが重要です。

よくある質問

Console.ReadLineで空白を入力するとどうなる?

Console.ReadLineメソッドで空白を入力した場合、空の文字列("")が返されます。

つまり、ユーザーが何も入力せずにEnterキーを押すと、プログラムは空の文字列を受け取ります。

これを利用して、空白の入力を特別に処理することができます。

string input = Console.ReadLine();
if (input == "")
{
    Console.WriteLine("空の入力がありました。");
}

Console.ReadLineで改行を含む入力は可能?

Console.ReadLineメソッドは、1行の入力を受け取るためのメソッドです。

そのため、改行を含む入力はできません。

ユーザーがEnterキーを押すと、入力が完了し、改行は入力の一部として扱われません。

複数行の入力を受け取りたい場合は、ループを使用して複数回Console.ReadLineを呼び出す必要があります。

while (true)
{
    string line = Console.ReadLine();
    if (line == "終了") break; // 「終了」と入力されたらループを終了
    Console.WriteLine("入力された行: " + line);
}

Console.ReadLineで入力をキャンセルする方法はある?

Console.ReadLineメソッド自体には、入力をキャンセルする機能はありません。

しかし、ユーザーが特定のキーワード(例えば「キャンセル」)を入力することで、入力を中断することができます。

これを実現するためには、ループを使用して、ユーザーの入力を監視する必要があります。

Console.WriteLine("入力を開始してください。キャンセルするには「キャンセル」と入力してください。");
string input;
while ((input = Console.ReadLine()) != "キャンセル")
{
    Console.WriteLine("入力された内容: " + input);
}
Console.WriteLine("入力がキャンセルされました。");

このように、Console.ReadLineメソッドを使用する際には、ユーザーの入力を適切に処理するための工夫が必要です。

まとめ

この記事では、C#のConsole.ReadLineメソッドの基本的な使い方から、エラーハンドリングや応用例、他の入力メソッドとの比較まで幅広く解説しました。

これにより、ユーザーからの入力を効果的に処理するための方法を学ぶことができました。

今後は、実際のプログラムにこれらの知識を活かし、インタラクティブなアプリケーションを作成してみてください。

  • URLをコピーしました!
目次から探す