- 1 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:37:13.166 ID:WTt6Xd1v0NIKU
- string line = Console.ReadLine();
string[] a = line.Split();
int[] b = new int[2];
b[0] = int.Parse(a[0]);
b[1] = int.Parse(a[1]);これでもできるんだけど、もっとスマートにしたい
- 2 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:40:28.378 ID:uLoEmBqH0NIKU
- 前リード2回やってヌルエラーやった奴か?
配列の要素数取って回せばいいんじゃないの - 6 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:44:16.275 ID:WTt6Xd1v0NIKU
- >>2
そうですstring line = Console.ReadLine();
string[] a = line.Split();
int[] b = {
int.Parse(a[0]),
int.Parse(a[1])};
こんな感じ?
これでもできるけど、もっとコンパクトにしたい
全体を1~2行にできないかな - 3 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:41:47.697 ID:uLoEmBqH0NIKU
- C#ならリスト変数とかいう有能がおるからそれもええよ
- 10 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:49:40.742 ID:WTt6Xd1v0NIKU
- >>3
DictionaryよりListかな
ただこの場合は、配列のほうが理解しやすい気がする>>4
できた。ありがとう
こんどは1行にしてみる>>8
目的というか学習になるかと思って最後は汎用性を高めてみたい
- 4 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:43:13.867 ID:ujMqmgqy0NIKU
- string[] a = Console.ReadLine().Split();
int[] b = new int[2]{int.Parse(a[0]),int.Parse(a[1])};こんな感じでいけたような
- 7 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:44:36.626 ID:WTt6Xd1v0NIKU
- >>4
おお、ちょっとやってみる - 12 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:54:59.782 ID:WTt6Xd1v0NIKU
- >>4
一行にしてみたくて
int[] a = int.Parse(Console.ReadLine().Split());
やったけど、エラー
Splitつけると配列扱いだよね?>>9
いくつあるかわからないときには配列はだめで、Listにするんだっけ?
Listならforeachか
確か配列はforeachが使えなかったはず - 13 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:56:27.842 ID:WZRTel5o0NIKU
- >>12
これじゃだめ?
int[] numbers = Console.ReadLine().Split().Select(item => int.Parse(item)).ToArray(); - 17 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 16:03:48.367 ID:ujMqmgqy0NIKU
- >>12
int.Parseは使い方調べればわかると思うけど単一の文字列を単一の数値に変換するだけだぞ - 20 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 16:10:08.342 ID:WTt6Xd1v0NIKU
- int[] a = {int.Parse(Console.ReadLine().Split())[0],int.Parse(Console.ReadLine().Split())[1]};
ってやったけど駄目だった
>>17
int.Parseは配列に格納してからじゃないと使えないんだよね?
Splitが配列になっているなら、インデックス添えればいけるかなとおもったんだけど - 5 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:43:24.154 ID:cWqLXTSF0NIKU
- c#触ったことねえわ
- 8 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:45:32.661 ID:N132HzmHrNIKU
- 2行にすると可読性がオワコン化して改造もしにくくなるから
素直に5行にしとけ行数を減らすこと自体が目的なら知らんけど
- 9 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:48:48.758 ID:Jh4/qHTT0NIKU
- c#やったことないけど要素数とってforかなんかで回したほうが良くない?
一行に数値が3つ以上くることがないならそれでも良いけど - 11 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:53:21.188 ID:WZRTel5o0NIKU
- こういうこと?
int[] numbers = line.Split().Select(item => int.Parse(item)).ToArray();
- 15 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 15:59:20.787 ID:WTt6Xd1v0NIKU
- >>11
>>13
エラーがでるけど、Selectoinの使い方がわからないし、itemの意味がわからないし、ToArrayはちょっとみただけだから、どこを合わせればいいのかわからない。
>>4を1行にするには、上の知識が必要なのかな - 22 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 16:12:22.766 ID:ujMqmgqy0NIKU
- むりやり1行で書くとするならこうだぞ
こんな書き方する奴はいないけどなint[] b = new int[2]{int.Parse(Console.ReadLine().Split()[0]),int.Parse(Console.ReadLine().Split()[1])};
LINQとかラムダ式はもっとC#に慣れてから覚えればいいと思う
- 25 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 16:21:02.803 ID:WTt6Xd1v0NIKU
- >>22
Runtime errorUnhandled Exception:
System.NullReferenceException: Object reference not set to an instance of an object
at Hello.Main () [0x00022] in /workspace/Main.cs:9
[ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
at Hello.Main () [0x00022] in /workspace/Main.cs:9って出た
int[] a = {int.Parse(Console.ReadLine().Split()).ToArray};
ToArray使ってきれいにまとめられないかなと思ったけど、エラー - 28 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 16:25:17.282 ID:WZRTel5o0NIKU
- >>25
int.ParseにStringの配列を突っ込む事は出来ないよ
int.ParseできるのはString1つだけ
なのでみんなStringを1回ずつint.Parseさせるのよ - 29 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 16:26:45.421 ID:ujMqmgqy0NIKU
- >>25
ああすまんコンソール入力だったな
極限まで短くするのが良いプログラムじゃないからほどほどにした方がいい - 23 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 16:13:55.021 ID:C9akvoPW0NIKU
- C#とLINQは切っても切れない関係だから一緒にやるべきでは?
Where文とかSelect文なんかはLINQ以外でやろうとする方がこんがらがる - 24 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 16:17:58.990 ID:ujMqmgqy0NIKU
- >>1は基礎がまだ分かってないから段階を分けて覚えた方がいいと思う
LINQとかいきなりかめはめ波の出し方教えるようなものでしょ - 26 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 16:21:38.784 ID:/qXG4kE/0NIKU
- string[] a = Console.ReadLine().Split();
int[] b = Array.ConvertAll<string, int>(a,delegate(string value) {return int.Parse(value);});とかもありか?
2行だがw - 27 名前:ひみつの名無しさん 投稿日時:2020/04/29(水) 16:24:42.459 ID:/qXG4kE/0NIKU
- ああ、ここに入れちゃえば1行か
int[] b = Array.ConvertAll<string, int>(Console.ReadLine().Split(),delegate(string value) {return int.Parse(value);});
コメント