コンソール画面で入力値を受け取る方法

コンソールアプリケーションを作成するときに出てくるコンソール画面から入力値を受け取る方法を解説します。

コンソール画面で入力値を受け取るには

コンソール画面で入力値を受け取るには「Console.ReadLine()」という機能を使って実現します。この機能は画面からの入力値を「文字列型」で受け取ってくれる機能になります。

string input = Console.ReadLine();

実際のソースコードでは上記のように記載します。次の章でサンプルを作成しながら処理を見ていきますので、今の段階では「そうやって書くんだ~」くらいで理解してもらえれば十分です。

また、イコール記号の右側「Console.ReadLine()」で受け取ってくれる値を「戻り値」と呼んだりもします。これは「機能から戻ってくる値」のことを言っています。ですので、「文字列型の変数inputにConsole.ReadLine()の戻り値を代入する」と処理を説明できます。

コンソール画面から入力値を受け取ってみよう

導入は済んだということで、ここからあなたにもサンプルを書いてもらいながら、コンソール画面から入力値を受け取る方法を学んでもらいます。ここでは文字列の入力値と数値型の入力値を受け取る方法を解説します。

文字列の入力値を受け取る方法

新しいアプリケーションを作成して以下のコードを書いてみてください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App10
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("何か入力してください。");

            string input = Console.ReadLine();

            Console.WriteLine();

            Console.Write("入力値は「");
            Console.Write(input);
            Console.Write("」でした。");

            Console.ReadLine();
        }
    }
}

上記のサンプルが書けたら実行してみましょう。適当に入力してエンターキーを押したら、一行改行してその下に以下のように表示されたと思います。

入力値は「○○○○○○○○」でした。

「Console.WriteLine()」と「Console.Write()」をうまく使うと、画面にメッセージを綺麗に出すことができます。いろいろと工夫してみると面白いです。

注目は「string input = Console.ReadLine();」の部分ですね。この記事の最初のほうにも書きましたが、「Console.ReadLine()」は文字列型で値を返してくれます。戻り値がstring型ですので、左側の受ける変数の型もstring型となります。

数値型の入力値を受け取る方法

「数値型の入力値を受け取れると思いますか?」

答えは「できません」です。先ほどから書いていますが、「Console.ReadLine()」はどんなに頑張っても文字列型でしか戻り値を返してくれません。数値型として入力値を受け取ることはできないので、別の方法で入力値を数値型にするしかないのです。

要するに「文字列型にして数値に変換」してしまえばよいのです。ではサンプルを新しいアプリケーションを使って書いていきましょう。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App11
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("数値を入力してください。");

            string input = Console.ReadLine();
            int inputNum = Convert.ToInt32(input);

            Console.WriteLine();

            Console.Write("入力値:");
            Console.WriteLine(inputNum.ToString());

            Console.ReadLine();
        }
    }
}

今回もプログラムを書いたら実際に動かして、あなたの目で動きを確認してみてください。デバッグを駆使して変数の中身を確認するなどすると理解が進みます。

先ほども言っていますが「Console.ReadLine()」は文字列型しか戻せません。なので文字列を変換してint型に変換するようにしています。「Convert.ToInt32();」という処理の括弧の中に数値に変換できる文字を記述することで数値に変換してくれます。

数値以外を入力した場合はエラーでアプリケーションが止まってしまいます。これは次回以降に解決します。

ガイダンスの後に入力値を文字列型で受け取るように記述し、その下で数値型に変換するようにしています。いまは理解しやすいように2行に分けて記述していますが、分けずにまとめて記述してしまうことも可能です。サンプルを以下のように書き換えてみましょう。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App11
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("数値を入力してください。");

            int inputNum = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine();

            Console.Write("入力値:");
            Console.WriteLine(inputNum.ToString());

            Console.ReadLine();
        }
    }
}

上記のように記述することで、入力値の受け取りと数値への変換を一気に行えます。複数の処理をまとめて記述することで、ソースコードがスッキリしました。このようにプログラムを書ける時は、積極的にシンプルさを突き詰めてみるのもいい練習になります。