どうも、コニーです
最近AtCoderを始めたのですが、
標準入出力ってなんじゃいな!?
となったのでC#で標準入出力をする方法をメモします
載せているコードはあくまでも書き方の一つなので、もっといい書き方があれば更新していきます
C#での標準入力
まずは入力からです
AtCoderではテキストファイルを与えられるのですが、その形式に合わせたコードになっています
なお見やすくするためclass名などは消してあります
入力コード一覧
//文字を読み込む
string a = Console.ReadLine();
//1文字ずつ読み込む
char[] b = Console.ReadLine().ToCharArray();
//整数配列で読み込みたいとき
int[] c = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
//stringをintに変える場合
string[] input = Console.ReadLine().Split(' ');
int d = int.Parse(input[0]);
//2次元配列で読み込みたい場合
int[,] X = new int[2, 2];
for (int i = 0; i < 2; i++)
{
int[] gyou= Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
for (int j = 0; j < 2; j++)
{
X[i, j] = gyou[j];
}
}
文字列を読み込みたいとき
//文字を読み込む
string a = Console.ReadLine();
一番シンプルな標準入力です
後で説明する「stringからintへの変換との組み合わせ」はよく使います
1文字ずつ読み込みたいとき
//1文字ずつ読み込む
char[] b = Console.ReadLine().ToCharArray();
私が最初につまづいたところです
string型で読み込んでからchar型にバラバラにするイメージがわかりやすいかもしれません
整数で読み込みたいとき
//整数配列で読み込みたいとき
int[] c = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
//stringをintに変える場合
string[] input = Console.ReadLine().Split(' ');
int d = int.Parse(input[0]);
これはAtCoderの最重要項目といってもいいんじゃないでしょうか?
1つ目のやつはごちゃごちゃしてますが
- string型の文字列で読み込む
- 空白ごとに分割してstring配列にする
- int型に変換
- int配列に収納
という操作を1行ですますコードです
2つ目のやつは先ほどの工程を①+②と③+④という感じに分けたものです
場面によって使いわけですね
2次元配列で読み込みたいとき
//2次元配列で読み込みたい場合
int[,] X = new int[2, 2];//今回は2x2の行列で考える
for (int i = 0; i < 2; i++)
{
int[] gyou= Console.ReadLine().Split(' ').Select(int.Parse).ToArray();//行の読み込み
for (int j = 0; j < 2; j++)
{
X[i, j] = gyou[j];//列への割り当て
}
}
結構出てくる2次元配列の入力です
もっとやり方があるような気もしますが、とりあえずこれで読み込めます
C#での標準出力
次に出力です
出力一覧
//1つの値の出力
Console.WriteLine(a);
//複数の数字の出力
int e = 1;
int f = 2;
Console.WriteLine("e={0}, f={2}", e, f);
1つの値の出力
//1つの値の出力
Console.WriteLine(a);
基本的にはこれで行けます
aに入るものがstring型だろうがint型だろうが出力できる優れものです
複数の数字の出力
//複数の数字の出力
int e = 1;
int f = 2;
Console.WriteLine("e={0}, f={2}", e, f);
複数の数字を出力するときはこの書き方をします
「e=」とかはわかりやすくしているだけなので必要ありません
途中で値の検算をしたいときに使います
C#の標準入出力について
いろいろ書きましたが、正直これは
とにかく慣れろ!!
が正解だなと思っています
LINKQとかいろいろありますが、とりあえずは自分が知っている知識をどう使うかが大事だと思います
また知識が増えたら更新していきますね
ではまた!