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());
}