質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

5243閲覧

C# 標準入力での配列

khr0404

総合スコア43

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

1クリップ

投稿2018/03/22 05:12

前提・実現したいこと

C#で標準入力での複数行を配列にいれることがしたいです。
paiza IO等でweb上で確認するため標準入力からのデータの読み込みなのですが、
複数行データがある際に配列に格納する方法をご教授いただきたいです。

発生している問題・エラーメッセージ

static void Main(string[] args) { string[] lines = Console.ReadLine().Split('\r\n'); Console.WriteLine(lines[0]); Console.WriteLine(lines[1]); }

もとの入力値が
100
200
300

とあった場合出力値に
100
200
と出したいです。

上記ソースだと

Too many characters in character literal

とエラーがでます。

申し訳ありませんが、ご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Console.ReadLine() を一回呼び出すと一行読み込めます。
null を返すまで続けてください。
私は競技プログラミング用に次のようなテンプレート(抜粋)を作っています。

C#

1static class Program 2{ 3 public static void ForEach<T>(this IEnumerable<T> target, Action<T> action) 4 { 5 foreach (var a in target) 6 { 7 action(a); 8 } 9 } 10 11 static IEnumerable<string> ReadLines() 12 { 13 while (true) 14 { 15 var line = Console.ReadLine(); 16 if (line == null) break; 17 yield return line; 18 } 19 } 20 21 public static void Main(string[] args) 22 { 23 ReadLines().ForEach(a => 24 { 25 // 処理 26 }); 27 } 28}

###追記

上記コード前提で配列に格納するには次のようにします。

C#

1var array = ReadLines().ToArray();

そうでなければサイズがわからないのでまずリストに入れます。

C#

1var list = new List<string>(); 2while (true) 3{ 4 string line = Console.ReadLine(); 5 if (line == null) break; 6 list.Add(line); 7} 8var array = list.ToArray();

投稿2018/03/22 05:25

編集2018/03/22 05:45
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khr0404

2018/03/22 06:02

回答ありがとうございます。 リストへ入れてから配列に変換する方法が使いやすそうなのでそちらから試してみようと思います。 ありがとうございました。
Zuishin

2018/03/22 06:57

自分で書いて言うのも何ですが、List は配列の上位互換に近いので特別な理由のない限りそのまま使った方がいいと思います。 配列に直す必要があるのは引数として配列を求めるようなメソッドを呼び出す時くらいです。
guest

0

最近多いなぁ、春だからか?
✕:ご教授
◯:ご教示

さておき。
Console.ReadLineはその名の通り、ConsoleからReadLineするだけです。
すなわち改行コードは読み込めませんし、そんな用途にも使いません。
どうしてもReadLineで処理したい場合は入力文字列に適切なデリミタを含め、それに対応したロジックを組む必要があります。
あるいはこんな記事もありましたので、この方法なら改行コードごと読み込めるかも知れません。
(ごめんなさい使ったことないので)

投稿2018/03/22 05:25

ShikaTech

総合スコア468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khr0404

2018/03/22 05:52

回答ありがとうございます。 特に深く考えずに毎回ご教授と使っていましたがご教示のほうがこうゆう場所では適しているのですね。 そもそもこの方法よりももっと良い方法があるはずですね。。。
guest

0

ReadLine は文字通り1行の入力関数です
ここのところをループさせる必要がありますねー

投稿2018/03/22 05:22

編集2018/03/22 05:23
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

khr0404

2018/03/22 05:50

回答ありがとうございます。 なるほど一行しか読み込めないのでしたか。。。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問