[C#] コンソール画面にテキストを表示する方法

C#でコンソール画面にテキストを表示するには、Console.WriteLineメソッドを使用します。

このメソッドは、指定した文字列をコンソールに出力し、その後に改行を追加します。

例えば、Console.WriteLine("Hello, World!");と記述すると、コンソールに Hello, World! が表示されます。

改行を追加せずにテキストを表示したい場合は、Console.Writeメソッドを使用します。

これにより、次の出力が同じ行に続けて表示されます。

これらのメソッドは、C#の基本的な入出力操作の一部として広く使用されます。

この記事でわかること
  • Console.WriteLineとConsole.Writeの基本的な使い方とその違い
  • 文字列補間やString.Formatを用いた文字列のフォーマット方法
  • エスケープシーケンスを使った特殊文字の表示方法
  • Console.ReadLineを用いたユーザー入力の取得と型変換の方法
  • 簡単なメニュー作成やファイルからのデータ読み込みといった応用例

目次から探す

コンソール出力の基本

C#でコンソールアプリケーションを作成する際、コンソール画面にテキストを表示する方法は非常に重要です。

ここでは、基本的なコンソール出力の方法について解説します。

Console.WriteLineメソッドの使い方

Console.WriteLineメソッドは、コンソールにテキストを表示し、その後に改行を追加します。

これにより、次の出力は新しい行から始まります。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("こんにちは、世界!"); // 文字列を表示し、改行する
    }
}
こんにちは、世界!

この例では、”こんにちは、世界!”という文字列がコンソールに表示され、その後に改行されます。

Console.WriteLineは、改行を自動的に追加するため、複数行の出力を行う際に便利です。

Console.Writeメソッドの使い方

Console.Writeメソッドは、コンソールにテキストを表示しますが、改行は行いません。

次の出力は同じ行に続けて表示されます。

using System;
class Program
{
    static void Main()
    {
        Console.Write("こんにちは、"); // 文字列を表示するが、改行しない
        Console.Write("世界!"); // 同じ行に続けて表示する
    }
}
こんにちは、世界!

この例では、Console.Writeを使用して、”こんにちは、”と”世界!”を同じ行に連続して表示しています。

改行が不要な場合にConsole.Writeを使用します。

改行の違いと使い分け

Console.WriteLineConsole.Writeの主な違いは、改行の有無です。

以下の表にその違いをまとめます。

スクロールできます
メソッド名改行の有無使用例
Console.WriteLineあり複数行の出力を行う場合に使用
Console.Writeなし同じ行に連続して出力する場合に使用

改行が必要な場合はConsole.WriteLineを、同じ行に続けて出力したい場合はConsole.Writeを使用します。

これにより、出力のレイアウトを柔軟に制御できます。

文字列のフォーマット

C#では、文字列をフォーマットするための便利な方法がいくつか用意されています。

これにより、変数の値を含む文字列を簡単に作成できます。

ここでは、文字列補間、String.Formatメソッド、数値や日付のフォーマットについて解説します。

文字列補間を使った出力

文字列補間は、C# 6.0から導入された機能で、変数の値を文字列に埋め込むための簡潔な方法です。

文字列補間を使用するには、文字列の前に$記号を付けます。

using System;
class Program
{
    static void Main()
    {
        string name = "太郎";
        int age = 25;
        Console.WriteLine($"名前: {name}, 年齢: {age}"); // 変数を埋め込んで表示する
    }
}
名前: 太郎, 年齢: 25

この例では、$記号を使って、nameageの変数を文字列に埋め込んでいます。

文字列補間は、コードを読みやすくし、フォーマットを簡単に行うことができます。

String.Formatメソッドの活用

String.Formatメソッドは、文字列の中に変数の値を挿入するためのもう一つの方法です。

プレースホルダーを使用して、指定した位置に変数の値を挿入します。

using System;
class Program
{
    static void Main()
    {
        string name = "花子";
        int age = 30;
        Console.WriteLine(String.Format("名前: {0}, 年齢: {1}", name, age)); // プレースホルダーを使って表示する
    }
}
名前: 花子, 年齢: 30

この例では、{0}{1}のプレースホルダーを使用して、nameageの値を文字列に挿入しています。

String.Formatは、複雑なフォーマットを行う際に便利です。

数値や日付のフォーマット

数値や日付を特定の形式で表示するために、フォーマット指定子を使用することができます。

これにより、出力をより見やすく整えることができます。

using System;
class Program
{
    static void Main()
    {
        double price = 1234.56;
        DateTime today = DateTime.Now;
        Console.WriteLine($"価格: {price:C}"); // 通貨形式で表示する
        Console.WriteLine($"今日の日付: {today:yyyy年MM月dd日}"); // 日付を指定の形式で表示する
    }
}
価格: ¥1,234.56
今日の日付: 2023年10月15日

この例では、{price:C}を使用して価格を通貨形式で表示し、{today:yyyy年MM月dd日}を使用して日付を指定の形式で表示しています。

フォーマット指定子を活用することで、出力をより直感的に整えることができます。

特殊文字とエスケープシーケンス

C#では、文字列内で特殊文字を扱うためにエスケープシーケンスを使用します。

エスケープシーケンスを理解することで、文字列の中に改行やタブ、バックスラッシュなどの特殊文字を含めることができます。

エスケープシーケンスの基本

エスケープシーケンスは、バックスラッシュ(\)を使って特殊な文字を表現する方法です。

以下は、よく使われるエスケープシーケンスの一覧です。

スクロールできます
エスケープシーケンス説明
\n改行
\tタブ
\\バックスラッシュ
\"ダブルクォート

例として、改行とタブを含む文字列を表示するコードを示します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("こんにちは、\n世界!"); // 改行を含む文字列
        Console.WriteLine("名前:\t太郎"); // タブを含む文字列
    }
}
こんにちは、
世界!
名前:    太郎

この例では、\nを使って改行し、\tを使ってタブを挿入しています。

特殊文字の表示方法

文字列内でダブルクォートやバックスラッシュを表示するには、エスケープシーケンスを使用します。

特に、ダブルクォートを含む文字列を表示する際には、\を使ってエスケープします。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("彼は\"天才\"と言われています。"); // ダブルクォートを含む文字列
        Console.WriteLine("ファイルパスはC:\\Program Files\\です。"); // バックスラッシュを含む文字列
    }
}
彼は"天才"と言われています。
ファイルパスはC:\Program Files\です。

この例では、\"を使ってダブルクォートを表示し、\\を使ってバックスラッシュを表示しています。

バックスラッシュの扱い

バックスラッシュはエスケープシーケンスの開始を示すため、文字列内でそのまま表示するには、\\と記述します。

これは、エスケープシーケンスを無効にし、バックスラッシュ自体を表示するためです。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("バックスラッシュを表示: \\"); // バックスラッシュを表示する
    }
}
バックスラッシュを表示: \

この例では、\\を使用してバックスラッシュを表示しています。

エスケープシーケンスを正しく理解し、特殊文字を適切に扱うことが重要です。

ユーザー入力の取得

C#のコンソールアプリケーションでは、ユーザーからの入力を取得するためにConsole.ReadLineメソッドを使用します。

ここでは、ユーザー入力の基本的な取得方法、入力されたデータの型変換、そして入力エラーの処理について解説します。

Console.ReadLineメソッドの使い方

Console.ReadLineメソッドは、ユーザーが入力した文字列を取得するために使用されます。

このメソッドは、ユーザーがEnterキーを押すまで入力を待機します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("名前を入力してください: ");
        string name = Console.ReadLine(); // ユーザーからの入力を取得する
        Console.WriteLine($"こんにちは、{name}さん!"); // 入力された名前を表示する
    }
}
名前を入力してください: 
太郎
こんにちは、太郎さん!

この例では、ユーザーが入力した名前を取得し、挨拶メッセージに表示しています。

入力されたデータの型変換

Console.ReadLineは常に文字列を返しますが、数値や他の型に変換する必要がある場合があります。

int.Parsedouble.Parseなどのメソッドを使用して、文字列を適切な型に変換します。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("年齢を入力してください: ");
        string input = Console.ReadLine(); // ユーザーからの入力を取得する
        int age = int.Parse(input); // 文字列を整数に変換する
        Console.WriteLine($"あなたは{age}歳です。"); // 変換された年齢を表示する
    }
}
年齢を入力してください: 
25
あなたは25歳です。

この例では、ユーザーが入力した年齢を文字列から整数に変換しています。

入力エラーの処理

ユーザーが無効な入力をした場合に備えて、エラー処理を行うことが重要です。

TryParseメソッドを使用すると、変換が成功したかどうかを確認できます。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("年齢を入力してください: ");
        string input = Console.ReadLine(); // ユーザーからの入力を取得する
        if (int.TryParse(input, out int age)) // 変換が成功したかどうかを確認する
        {
            Console.WriteLine($"あなたは{age}歳です。"); // 変換された年齢を表示する
        }
        else
        {
            Console.WriteLine("無効な入力です。整数を入力してください。"); // エラーメッセージを表示する
        }
    }
}
年齢を入力してください: 
abc
無効な入力です。整数を入力してください。

この例では、int.TryParseを使用して、入力が整数に変換可能かどうかを確認し、無効な入力に対してエラーメッセージを表示しています。

これにより、ユーザーの入力エラーを適切に処理できます。

応用例

C#のコンソールアプリケーションでは、基本的な入力と出力を組み合わせて、さまざまな応用例を作成することができます。

ここでは、簡単なメニューの作成、ループを使った連続入力、ファイルからのデータ読み込みと表示について解説します。

簡単なメニューの作成

コンソールアプリケーションでメニューを作成することで、ユーザーに選択肢を提供し、選択に応じた処理を行うことができます。

using System;
class Program
{
    static void Main()
    {
        while (true)
        {
            Console.WriteLine("メニュー:");
            Console.WriteLine("1. 挨拶を表示");
            Console.WriteLine("2. 終了");
            Console.Write("選択してください: ");
            string choice = Console.ReadLine(); // ユーザーの選択を取得する
            if (choice == "1")
            {
                Console.WriteLine("こんにちは、世界!"); // 挨拶を表示する
            }
            else if (choice == "2")
            {
                Console.WriteLine("終了します。"); // 終了メッセージを表示する
                break; // ループを終了する
            }
            else
            {
                Console.WriteLine("無効な選択です。もう一度選んでください。"); // エラーメッセージを表示する
            }
        }
    }
}
メニュー:
1. 挨拶を表示
2. 終了
選択してください:

この例では、ユーザーにメニューを表示し、選択に応じて挨拶を表示するか、プログラムを終了します。

ループを使った連続入力

ループを使用することで、ユーザーからの連続した入力を処理することができます。

これにより、複数のデータを一度に入力することが可能です。

using System;
class Program
{
    static void Main()
    {
        Console.WriteLine("名前を入力してください(終了するには'終了'と入力):");
        while (true)
        {
            string name = Console.ReadLine(); // ユーザーからの入力を取得する
            if (name == "終了")
            {
                break; // ループを終了する
            }
            Console.WriteLine($"こんにちは、{name}さん!"); // 入力された名前を表示する
        }
    }
}
名前を入力してください(終了するには'終了'と入力):

この例では、ユーザーが”終了”と入力するまで、名前を入力し続けることができます。

ファイルからのデータ読み込みと表示

C#では、ファイルからデータを読み込んでコンソールに表示することも可能です。

これにより、外部データをプログラムに取り込むことができます。

using System;
using System.IO;
class Program
{
    static void Main()
    {
        string filePath = "data.txt"; // 読み込むファイルのパス
        if (File.Exists(filePath))
        {
            string[] lines = File.ReadAllLines(filePath); // ファイルからすべての行を読み込む
            foreach (string line in lines)
            {
                Console.WriteLine(line); // 各行を表示する
            }
        }
        else
        {
            Console.WriteLine("ファイルが見つかりません。"); // エラーメッセージを表示する
        }
    }
}
(data.txtの内容が表示されます)

この例では、data.txtというファイルからデータを読み込み、各行をコンソールに表示します。

ファイルが存在しない場合は、エラーメッセージを表示します。

よくある質問

Console.WriteLineとConsole.Writeの違いは?

Console.WriteLineConsole.Writeの主な違いは、出力後に改行を行うかどうかです。

Console.WriteLineは、指定した文字列を出力した後に自動的に改行を行います。

これにより、次の出力は新しい行から始まります。

一方、Console.Writeは改行を行わず、次の出力は同じ行に続けて表示されます。

改行が必要な場合はConsole.WriteLineを、同じ行に続けて出力したい場合はConsole.Writeを使用します。

文字列補間とString.Formatのどちらを使うべき?

文字列補間とString.Formatはどちらも文字列に変数の値を埋め込むために使用されますが、使い勝手が異なります。

文字列補間は、コードが読みやすく、変数を直接埋め込むことができるため、シンプルなフォーマットには非常に便利です。

例:$"名前: {name}, 年齢: {age}"

一方、String.Formatは、複雑なフォーマットや文化依存のフォーマットを行う際に便利です。

例:String.Format("名前: {0}, 年齢: {1}", name, age)

コードの可読性を重視する場合は文字列補間を、複雑なフォーマットが必要な場合はString.Formatを選ぶと良いでしょう。

コンソール出力が表示されない場合の対処法は?

コンソール出力が表示されない場合、いくつかの原因が考えられます。

まず、プログラムがすぐに終了してしまうことが原因である場合があります。

この場合、Console.ReadLineをプログラムの最後に追加して、ユーザーの入力を待つことで、コンソールウィンドウが閉じるのを防ぐことができます。

また、出力が期待通りに表示されない場合は、出力先が正しいか、出力内容が正しく指定されているかを確認してください。

デバッグモードで実行し、ブレークポイントを設定してプログラムの流れを確認することも有効です。

まとめ

この記事では、C#のコンソールアプリケーションにおける基本的な出力方法から、文字列のフォーマット、特殊文字の扱い、ユーザー入力の取得、さらには応用例としてメニューの作成やファイルからのデータ読み込みまでを詳しく解説しました。

これにより、コンソールアプリケーションの基礎をしっかりと押さえ、実践的なプログラムを作成するための土台を築くことができるでしょう。

ぜひ、ここで学んだ内容を活かして、より複雑で実用的なアプリケーションの開発に挑戦してみてください。

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