講義メモ 後半

p.27 WriteLineメソッドとWriteメソッド

・Console.WriteLineメソッドはカッコないの値または式の評価値をコンソールに出力し、末尾に改行コードを付加する
・よって「表示して改行」することになる
・表示のみで改行せず、次の表示を続きにしたければ、WriteLineの代わりにWriteメソッドを用いると良い
・なお「Console.WriteLine()」とすると、改行のみを行うことができる

p.27 text03.cs

//p.27 text03.cs
using System;
class Text03 
{
    public static void Main()
    {
        Console.Write("あ"); //文字列を表示(改行しない)
        Console.Write("い"); //文字列を表示(改行しない)
        Console.Write("う"); //文字列を表示(改行しない)
        Console.Write("え"); //文字列を表示(改行しない)
        Console.Write("お"); //文字列を表示(改行しない)
        Console.WriteLine(); //改行のみを行う
    }
}

p.28 フォーマット指定子を使った変数の表示

・文字列と変数の連結による表示には、以下の欠点がある
 ・出来上がりのイメージがつかみづらい
 ・同じ変数を複数回連結すると読みづらくなる
・そこで、変数値を当てはめるフォーマット指定子{0}{1}{2}…を文字列に埋め込んでConsole.WriteLine/Writeに変数と共に渡すことが
 できる
例: int a = 10; Console.WriteLine("aは{0}", a); ⇒ 「aは10」と表示
・なお、変数値ではなくリテラルや式でもOK
例: Console.WriteLine("{0}は3倍速い", "シャア"); ⇒ 「シャアは3倍速い」と表示
例: Console.WriteLine("1 + 2 = {0}", 1 + 2); ⇒ 「1 + 2 = 3」と表示
・{1}{2}…を用いることで、複数の変数値やリテラルや式を指定できる
例: Console.WriteLine("{0}は{1}倍速い", "シャア", 3); ⇒ 「シャアは3倍速い」と表示
例: Console.WriteLine("{0} + {1} = {2}", 1, 2, 1 + 2); ⇒ 「1 + 2 = 3」と表示
例: Console.WriteLine("HISCORE : {0}", hiscore); ⇒ hiscoreの値が12345なら「HISCORE : 12345」と表示
・同じフォーマット指定子を複数回利用できる
例: Console.WriteLine("{0}は3倍速いので{0}は脅威", "シャア"); ⇒ 「シャアは3倍速いのでシャアは脅威」と表示
例: int a = 10; Console.WriteLine("{0} + {0} = {1}", a, a + a); ⇒ 「10 + 10 = 20」と表示

p.28 text04.cs

//p.28 text04.cs
using System;
class Text04
{
    public static void Main()
    {
        int x = 10; //32ビット整数型変数xを初期化
        Console.WriteLine("x = {0}", x); //"x = 10"を表示
        Console.WriteLine("x = {0}, xの10倍は{1}です", x, x * 10); //"x = 10, xの10倍は100です"を表示
        Console.WriteLine("{0}は{1}ですが、{2}は{1}ではありません", 
            "猫", "ほ乳類", "トカゲ"); //"猫はほ乳類ですが、トカゲはほ乳類ではありません"を表示
    }
}

ミニ演習 mini029a.cs

・p.26 Text02.csをフォーマット指定子を利用して改良しよう(連結は行わないようにしよう)

作成例

//ミニ演習 mini029a.cs
using System;
class Text02 
{
    public static void Main()
    {
        int a = 10, b = 20; //32ビット整数型変数a、bを初期化
        Console.WriteLine("{0} + {1} = {2}", a, b, a + b); //改良
    }
}

p.29 桁数の指定

・フォーマット指定子の拡張機能として、桁数と表示フォーマットを指定できる
・桁数のみを指定するには「{番号, 桁数}」とすれば良い
・この桁数は表示の制限ではなく、確保する大きさで、大きさを値が上回る場合、桁数指定は無視される
・例えば、"ABC"を4桁で表示すると、"A"の前に1つ空白が入る
・例えば、"ABCDE"を4桁で表示すると、"ABCDE"のままになり、桁数指定は無視される
・よって、複数のデータの表示を揃えたり、見やすくするための技法になっている
・なお、前に空白を入れることを右揃えともいう
・また、桁数の前に「-」を指定すると(見かけ上、負の数にすると)後ろに空白を入れる左揃えになる
活用例:
int a = 12, b = 345, c = 6789;
Console.WriteLine("{0, 5}", a); //「   12」と表示
Console.WriteLine("{0, 5}", b); //「  345」と表示
Console.WriteLine("{0, 5}", c); //「 6789」と表示

p.30 text05.cs

// text05.cs
using System;
class text05
{
    public static void Main()
    {
        int x = 10, y = 123456789;
        Console.WriteLine("12345678901234567890123456789");
        Console.WriteLine("{0, 10}", "abc"); //前に7個空白
        Console.WriteLine("{0, 5}", "def"); //前に2個空白
        Console.WriteLine("{0, 0}", "ghi"); //前に0個空白
        Console.WriteLine("{0, 10}{1, 10}", "あ", "い"); //前に9個空白、前に9個空白、
        Console.WriteLine("{0, -10}{1, -10}", "あ", "い"); //後に9個空白、後に9個空白
        Console.WriteLine("x = {0, 5}, y = {1, 3}", x, y); //前に3個空白、桁数指定無視
    }
}

p.30 標準書式指定文字を使った書式の指定

・C#が定める標準書式指定文字を桁数指定と主に用いると表示形式の編集が効率化される
・なお、表2.1の中にはあまり使われてないものもあるので丸暗記は不用
・便利なのは「C」の通貨形式(前に\をつけて3桁カンマ区切り)や「P」のパーセント形式(小数値からパーセンテージにする)
・16進数に変換して表示する「X」、小数点以下桁数を指定して四捨五入できる「Fn」も便利(nは小数点以下桁数)

p.31 text06.cs

//p.31 text06.cs
using System;
class text06
{
    public static void Main()
    {
        Console.WriteLine("D{0, 10:D}", 123); //前に7個空白
        Console.WriteLine("X{0, 10:X}", 123); //16進数7Bに変換、前に8個空白
        Console.WriteLine("E{0, 10:E}", 123.456); //1.234560E+002 指数表記
        Console.WriteLine("F{0, 10:F}", 123.456); //123.46 小数点以下2桁に丸める
        Console.WriteLine("F{0, 10:F5}", 123.456); //123.45600 小数点以下5桁
        Console.WriteLine("C{0, 10:C}", 123456); //¥123,456 通貨形式
        Console.WriteLine("N{0, 10:N}", 1234.4568); //1,234.46 カンマ区切り
        Console.WriteLine("P{0, 10:P}", 0.05); //5% パーセント表記
        Console.WriteLine("G{0, 10:G}", 123.456); //この場合、Fn表記と同様
    }
}

提出:ミニ演習 mini029a.cs

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です