C#で標準入力を使ったよくある処理のまとめ

C#で標準入力を使ったよくある処理をまとめました。

入力文字列を1行読み取る

入力された文字列を1行読み取り、そのまま出力します。

入力例

test1

出力例

test1

ソースコード

public static void Main(string[] args)
{
    var line = System.Console.ReadLine();
    System.Console.WriteLine(line);
}

入力文字列の1行目の数値を読み取る

1行目の文字列を取得して、数値に変換します。

入力例

2

出力例

2

解説

文字列を整数に変換するときは、Int32.Parse()を使用します。

小数に変換するときは、float.Parse()を使用します。

整数に変換できるか確認するときは、Int32.TryParse()を使用します。

ソースコード

整数に変換するとき

var line = System.Console.ReadLine();
var n = System.Int32.Parse(line);
System.Console.WriteLine(n);

小数に変換するとき

var line = System.Console.ReadLine();
var n = float.Parse(line);
System.Console.WriteLine(n);

整数に変換できるか確認するとき

var line = System.Console.ReadLine();
int n;
if (System.Int32.TryParse(line, out n))
    System.Console.WriteLine(n);
else
    System.Console.WriteLine($"入力値「{line}」は整数ではありません。");

区切り文字で分割して配列にする

文字列を区切り文字で分割した配列にします。

入力例

A B C

出力例

l   {string[3]}   string[]
    [0]    "A"    string
    [1]    "B"    string
    [2]    "C"    string

解説

String.Split()は区切り文字を引数に取り、文字列の配列を返します。

String[] 配列 = String.Split(区切り文字);

ソースコード

var line = System.Console.ReadLine();
var l = line.Split(' ');

区切り文字で分割して浮動小数点数にする

空白で区切られた複数の浮動小数点数の文字列を、浮動小数点数の配列にします。

入力例

1.23 4.56 7.89

出力例

l   {float[3]}     float[]
    [0]    1.23    float
    [1]    4.56    float
    [2]    7.89    float

解説

文字列を区切り文字で分割し、浮動小数点数に変換します。

ソースコード

using System.Linq;

var line = System.Console.ReadLine();
var l = line.Split(' ').Select(s => float.Parse(s)).ToArray();

N行読み込む

1行目は行数、2行目に以降は値があるときに、値の配列を取得します。

形式

N
a1
a2
a3
...
aN

入力例

5
1
2
3
4
5

出力例

l   {int[5]}    int[]
    [0]    1    int
    [1]    2    int
    [2]    3    int
    [3]    4    int
    [4]    5    int

解説

1行目を読み取って行数を取得し、行の数だけ繰り返し値を読み込みます。

ソースコード

    var n = System.Int32.Parse(System.Console.ReadLine());
    var l = new int[n];
    for (int i = 0; i < n; i++)
    {
        l[i] = System.Int32.Parse(System.Console.ReadLine());
    }

1行目の行数と列数

1行目の行数と列数があり、2行目以降に整数がある形式です。

各行の値を整数の配列にして、リストに登録します。

形式

N M
a11 a12 a13 ... a1M
a21 a22 a23 ... a2M
a31 a32 a33 ... a3M
...
aN1 aN2 aN3 ... aNM

入力

5 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20

出力

l   Count = 5    System.Collections.Generic.List<int[]>
-   [0]    {int[4]}    int[]
        [0]    1    int
        [1]    2    int
        [2]    3    int
        [3]    4    int
-   [1]    {int[4]}    int[]
        [0]    5    int
        [1]    6    int
        [2]    7    int
        [3]    8    int
-   [2]    {int[4]}    int[]
        [0]    9    int
        [1]    10    int
        [2]    11    int
        [3]    12    int
-   [3]    {int[4]}    int[]
        [0]    13    int
        [1]    14    int
        [2]    15    int
        [3]    16    int
-   [4]    {int[4]}    int[]
        [0]    17    int
        [1]    18    int
        [2]    19    int
        [3]    20    int

解説

各行の文字列をString.Split()で分割した後、Enumerable.Take()で必要な数だけ取り出ます。
その後、整数に変換して、リストに登録します。

ソースコード

var x = System.Console.ReadLine().Split(' ').Select(i => System.Int32.Parse(i)).ToArray();
var n = x[0];
var m = x[1];
var l = new System.Collections.Generic.List<int[]>(n);
for (int i = 0; i < n; i++)
{
    var values = System.Console.ReadLine().Split(' ').Take(m);
    l.Add(values.Select(v => System.Int32.Parse(v)).ToArray());
}

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください